[gtk+] [broadway] Add helper for processing input at idle
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] [broadway] Add helper for processing input at idle
- Date: Thu, 7 Apr 2011 19:19:30 +0000 (UTC)
commit 1fa952fb041ca57e3c462a025e93d16c05dac175
Author: Alexander Larsson <alexl redhat com>
Date: Tue Apr 5 10:43:04 2011 +0200
[broadway] Add helper for processing input at idle
gdk/broadway/gdkdisplay-broadway.c | 20 +++++++++++---------
gdk/broadway/gdkdisplay-broadway.h | 1 +
2 files changed, 12 insertions(+), 9 deletions(-)
---
diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c
index 261d1f2..a63b755 100644
--- a/gdk/broadway/gdkdisplay-broadway.c
+++ b/gdk/broadway/gdkdisplay-broadway.c
@@ -304,12 +304,21 @@ parse_input (BroadwayInput *input)
static gboolean
process_input_idle_cb (GdkBroadwayDisplay *display)
{
+ display->process_input_idle = 0;
process_input_messages (display);
return FALSE;
}
static void
-_gdk_broadway_display_read_all_input_nonblocking (GdkDisplay *display )
+queue_process_input_at_idle (GdkBroadwayDisplay *broadway_display)
+{
+ if (broadway_display->process_input_idle == 0)
+ broadway_display->process_input_idle =
+ g_idle_add_full (GDK_PRIORITY_EVENTS, (GSourceFunc)process_input_idle_cb, broadway_display, NULL);
+}
+
+static void
+_gdk_broadway_display_read_all_input_nonblocking (GdkDisplay *display)
{
GdkBroadwayDisplay *broadway_display;
GInputStream *in;
@@ -375,15 +384,12 @@ _gdk_broadway_display_block_for_input (GdkDisplay *display, char op,
{
GdkBroadwayDisplay *broadway_display;
BroadwayInputMsg *message;
- gboolean queued_idle;
gssize res;
guint8 buffer[1024];
BroadwayInput *input;
GInputStream *in;
GList *l;
- queued_idle = FALSE;
-
gdk_display_flush (display);
broadway_display = GDK_BROADWAY_DISPLAY (display);
@@ -424,11 +430,7 @@ _gdk_broadway_display_block_for_input (GdkDisplay *display, char op,
/* Since we're parsing input but not processing the resulting messages
we might not get a readable callback on the stream, so queue an idle to
process the messages */
- if (!queued_idle)
- {
- queued_idle = TRUE;
- g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc)process_input_idle_cb, display, NULL);
- }
+ queue_process_input_at_idle (broadway_display);
}
}
diff --git a/gdk/broadway/gdkdisplay-broadway.h b/gdk/broadway/gdkdisplay-broadway.h
index 54389f3..0440b08 100644
--- a/gdk/broadway/gdkdisplay-broadway.h
+++ b/gdk/broadway/gdkdisplay-broadway.h
@@ -147,6 +147,7 @@ struct _GdkBroadwayDisplay
guint32 saved_serial;
BroadwayInput *input;
GList *input_messages;
+ guint process_input_idle;
guint64 last_event_time;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]