Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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;
}
Esempio n. 8
0
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;
}
Esempio n. 9
0
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;
}
Esempio n. 10
0
/**
 * _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;
}
Esempio n. 11
0
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;
}
Esempio n. 12
0
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;
}
Esempio n. 13
0
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);
        }
    }
}
Esempio n. 14
0
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;
}