aboutsummaryrefslogtreecommitdiff
path: root/libs/libgui/gui.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libgui/gui.c')
-rw-r--r--libs/libgui/gui.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/libs/libgui/gui.c b/libs/libgui/gui.c
index dab00a6..b53c366 100644
--- a/libs/libgui/gui.c
+++ b/libs/libgui/gui.c
@@ -572,11 +572,9 @@ INLINE void gui_new_window(u32 *id)
void gui_redraw_window_only(u32 id)
{
- struct message_redraw_window msg = { .id = id, .header.state = MSG_NEED_ANSWER };
+ struct message_redraw_window msg = { .id = id };
gui_connect_wm();
- if (msg_send(GUI_REDRAW_WINDOW, &msg, sizeof(msg)) > 0 &&
- msg_receive(&msg, sizeof(msg)) > 0 &&
- msg.header.type == (GUI_REDRAW_WINDOW | MSG_SUCCESS))
+ if (msg_send(GUI_REDRAW_WINDOW, &msg, sizeof(msg)) > 0)
return;
gui_error(EINVAL);
@@ -620,26 +618,25 @@ static void gui_destroy_windows(void)
* Message handling
*/
-static void gui_handle_ping(struct message_ping *msg)
+static void gui_handle_ping_window(struct message_ping_window *msg)
{
if (msg->ping != MSG_PING_SEND)
gui_error(EINVAL);
- msg->header.type |= MSG_SUCCESS;
msg->ping = MSG_PING_RECV;
if (msg_connect_conn(msg->header.bus.conn) == EOK &&
- msg_send(GUI_PING, msg, sizeof(msg)) == EOK)
+ msg_send(msg->header.type | MSG_SUCCESS, msg, sizeof(*msg)) > 0)
return;
- gui_error(errno);
+ gui_error(EINVAL);
}
static void gui_handle_mouse(struct message_mouse *msg)
{
if (msg->header.state == MSG_NEED_ANSWER) {
if (msg_connect_conn(msg->header.bus.conn) == EOK &&
- msg_send(msg->header.type | MSG_SUCCESS, msg, sizeof(msg)) == EOK)
+ msg_send(msg->header.type | MSG_SUCCESS, msg, sizeof(*msg)) > 0)
return;
- gui_error(errno);
+ gui_error(EINVAL);
}
struct gui_widget widget = { 0 };
@@ -698,12 +695,12 @@ void gui_loop(void)
while (gui_connect_wm(), msg_receive(msg, 4096) > 0) {
struct message_header *head = (void *)msg;
switch (head->type) {
- case GUI_PING:
- gui_handle_ping((void *)msg);
- break;
case GUI_MOUSE:
gui_handle_mouse((void *)msg);
break;
+ case GUI_PING_WINDOW:
+ gui_handle_ping_window((void *)msg);
+ break;
case GUI_DESTROY_WINDOW:
gui_handle_destroy_window((void *)msg);
break;