static gboolean gdk_event_source_prepare(GSource *base, gint *timeout) { GdkWaylandEventSource *source = (GdkWaylandEventSource *) base; GdkWaylandDisplay *display = (GdkWaylandDisplay *) source->display; *timeout = -1; if (source->display->event_pause_count > 0) return _gdk_event_queue_find_first (source->display) != NULL; /* We have to add/remove the GPollFD if we want to update our * poll event mask dynamically. Instead, let's just flush all * write on idle instead, which is what this amounts to. */ if (_gdk_event_queue_find_first (source->display) != NULL) return TRUE; if (wl_display_flush (display->wl_display) < 0) g_error ("Error flushing display: %s", g_strerror (errno)); if (wl_display_dispatch_pending (display->wl_display) < 0) g_error ("Error dispatching display: %s", g_strerror (errno)); return FALSE; }
static gboolean gdk_event_source_check(GSource *base) { GdkWaylandEventSource *source = (GdkWaylandEventSource *) base; if (source->display->event_pause_count > 0) return _gdk_event_queue_find_first (source->display) != NULL; return _gdk_event_queue_find_first (source->display) != NULL || source->pfd.revents; }
static gboolean gdk_event_source_check (GSource *source) { GdkEventSource *event_source = (GdkEventSource*) source; gboolean retval; gdk_threads_enter (); if (event_source->display->event_pause_count > 0) retval = _gdk_event_queue_find_first (event_source->display) != NULL; else if (event_source->event_poll_fd.revents & G_IO_IN) retval = (_gdk_event_queue_find_first (event_source->display) != NULL || gdk_check_xpending (event_source->display)); else retval = FALSE; gdk_threads_leave (); return retval; }
static gboolean gdk_event_source_prepare (GSource *source, gint *timeout) { GdkDisplay *display = ((GdkEventSource*) source)->display; gboolean retval; gdk_threads_enter (); *timeout = -1; if (display->event_pause_count > 0) retval = _gdk_event_queue_find_first (display) != NULL; else retval = (_gdk_event_queue_find_first (display) != NULL || gdk_check_xpending (display)); gdk_threads_leave (); return retval; }
static gboolean gdk_android_event_prepare(GSource *source, gint *timeout) { gboolean retval; gdk_threads_enter(); retval = _gdk_event_queue_find_first(GDK_DISPLAY(_gdk_display)) != NULL; if (timeout) *timeout = 100; gdk_threads_leave(); return retval; }
static gboolean gdk_mir_event_source_prepare (GSource *g_source, gint *timeout) { GdkMirEventSource *source = (GdkMirEventSource *) g_source; gboolean mir_events_in_queue; if (_gdk_event_queue_find_first (source->display)) return TRUE; g_mutex_lock (&source->mir_event_lock); mir_events_in_queue = g_queue_get_length (&source->mir_events) > 0; g_mutex_unlock (&source->mir_event_lock); return mir_events_in_queue; }
static gboolean gdk_event_source_prepare (GSource *source, gint *timeout) { GdkDisplay *display = ((GdkEventSource*) source)->display; gboolean retval; GDK_THREADS_ENTER (); *timeout = -1; retval = (_gdk_event_queue_find_first (display) != NULL); GDK_THREADS_LEAVE (); return retval; }
static gboolean gdk_event_source_prepare (GSource *source, gint *timeout) { GdkDisplay *display = ((GdkEventSource*) source)->display; gboolean retval; gdk_threads_enter (); *timeout = -1; retval = (_gdk_event_queue_find_first (display) != NULL); gdk_threads_leave (); return retval; }
static gboolean gdk_event_source_check (GSource *source) { GdkEventSource *event_source = (GdkEventSource*) source; gboolean retval; GDK_THREADS_ENTER (); if (event_source->event_poll_fd.revents & G_IO_IN) retval = (_gdk_event_queue_find_first (event_source->display) != NULL); else retval = FALSE; GDK_THREADS_LEAVE (); return retval; }
/** * _gdk_event_unqueue: * @display: a #GdkDisplay * * Removes and returns the first event from the event * queue that is not still being filled in. * * Return value: the event, or %NULL. Ownership is transferred * to the caller. **/ GdkEvent* _gdk_event_unqueue (GdkDisplay *display) { GdkEvent *event = NULL; GList *tmp_list; tmp_list = _gdk_event_queue_find_first (display); if (tmp_list) { event = tmp_list->data; _gdk_event_queue_remove_link (display, tmp_list); g_list_free_1 (tmp_list); } return event; }
static gboolean gdk_android_event_check(GSource *source) { gboolean retval; struct android_app *app = _gdk_display->app; int astate = app->activityState; gdk_threads_enter(); retval = _gdk_event_queue_find_first(GDK_DISPLAY(_gdk_display)) != NULL; if (!retval && astate != APP_CMD_PAUSE && astate != APP_CMD_STOP) { int ident, events; struct android_poll_source *asource; // Read all pending events. while ((ident = ALooper_pollAll(0, NULL, &events, (void**) &asource)) >= 0) { // Process this event. if (asource != NULL) asource->process(app, asource); if (ident == LOOPER_ID_USER) { if (sensorEventQueue != NULL) { ASensorEvent event; while (ASensorEventQueue_getEvents(sensorEventQueue, &event, 1) > 0) { g_debug("sensor event received"); } } } if (app->destroyRequested != 0 && gdk_android_stop) { gdk_android_stop(); break; } } } gdk_threads_leave(); return retval; }
static gboolean gdk_event_source_prepare(GSource *base, gint *timeout) { GdkWaylandEventSource *source = (GdkWaylandEventSource *) base; GdkDisplayWayland *display = (GdkDisplayWayland *) source->display; *timeout = -1; /* We have to add/remove the GPollFD if we want to update our * poll event mask dynamically. Instead, let's just flush all * write on idle instead, which is what this amounts to. */ if (_gdk_event_queue_find_first (source->display) != NULL) return TRUE; while (source->mask & WL_DISPLAY_WRITABLE) wl_display_iterate(display->wl_display, WL_DISPLAY_WRITABLE); return FALSE; }
void _gdk_x11_display_queue_events (GdkDisplay *display) { GdkEvent *event; XEvent xevent; Display *xdisplay = GDK_DISPLAY_XDISPLAY (display); GdkEventSource *event_source; GdkX11Display *display_x11; display_x11 = GDK_X11_DISPLAY (display); event_source = (GdkEventSource *) display_x11->event_source; while (!_gdk_event_queue_find_first (display) && XPending (xdisplay)) { XNextEvent (xdisplay, &xevent); switch (xevent.type) { case KeyPress: case KeyRelease: break; default: if (XFilterEvent (&xevent, None)) continue; } event = gdk_event_source_translate_event (event_source, &xevent); if (event) { GList *node; node = _gdk_event_queue_append (display, event); _gdk_windowing_got_event (display, node, event, xevent.xany.serial); } } }
gboolean _gdk_android_display_has_pending(GdkDisplay *display) { g_debug("_gdk_android_display_has_pending is called"); return _gdk_event_queue_find_first(display) != NULL; }