[gtk+] [broadway] Break out _gdk_broadway_display_read_all_input_nonblocking
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] [broadway] Break out _gdk_broadway_display_read_all_input_nonblocking
- Date: Thu, 7 Apr 2011 19:19:20 +0000 (UTC)
commit ee1657d88ec911582d137205d0457f890a3943d0
Author: Alexander Larsson <alexl redhat com>
Date: Fri Apr 1 17:07:17 2011 +0200
[broadway] Break out _gdk_broadway_display_read_all_input_nonblocking
This is useful in other places, like when we want to iterate over
all messages recieved so far.
gdk/broadway/gdkdisplay-broadway.c | 39 +++++++++++++++++++++++++----------
1 files changed, 28 insertions(+), 11 deletions(-)
---
diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c
index cb9235b..cb3a138 100644
--- a/gdk/broadway/gdkdisplay-broadway.c
+++ b/gdk/broadway/gdkdisplay-broadway.c
@@ -298,17 +298,30 @@ parse_input (BroadwayInput *input)
g_byte_array_remove_range (input->buffer, 0, buf - (char *)input->buffer->data);
}
+
static gboolean
-input_data_cb (GObject *stream,
- BroadwayInput *input)
+process_input_idle_cb (GdkBroadwayDisplay *display)
+{
+ process_input_messages (display);
+ return FALSE;
+}
+
+static void
+_gdk_broadway_display_read_all_input_nonblocking (GdkDisplay *display )
{
GdkBroadwayDisplay *broadway_display;
GInputStream *in;
gssize res;
guint8 buffer[1024];
GError *error;
+ BroadwayInput *input;
+
+ broadway_display = GDK_BROADWAY_DISPLAY (display);
+ if (broadway_display->input == NULL)
+ return;
+
+ input = broadway_display->input;
- broadway_display = GDK_BROADWAY_DISPLAY (input->display);
in = g_io_stream_get_input_stream (G_IO_STREAM (input->connection));
error = NULL;
@@ -321,7 +334,7 @@ input_data_cb (GObject *stream,
g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
{
g_error_free (error);
- return TRUE;
+ return;
}
broadway_display->input = NULL;
@@ -331,22 +344,26 @@ input_data_cb (GObject *stream,
g_print ("input error %s", error->message);
g_error_free (error);
}
- return FALSE;
+ return;
}
g_byte_array_append (input->buffer, buffer, res);
parse_input (input);
- process_input_messages (broadway_display);
-
- return TRUE;
}
static gboolean
-process_input_idle_cb (GdkBroadwayDisplay *display)
+input_data_cb (GObject *stream,
+ BroadwayInput *input)
{
- process_input_messages (display);
- return FALSE;
+ GdkBroadwayDisplay *broadway_display;
+
+ broadway_display = GDK_BROADWAY_DISPLAY (input->display);
+ _gdk_broadway_display_read_all_input_nonblocking (input->display);
+
+ process_input_messages (broadway_display);
+
+ return TRUE;
}
/* Note: This may be called while handling a message (i.e. sorta recursively) */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]