[mutter/wip/carlosg/input-in-backends: 167/176] clutter: Remove event retrieval toggle



commit 52fe47aed25a8edfdb58983fde34637a498a1819
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Mar 29 14:35:37 2019 +0100

    clutter: Remove event retrieval toggle
    
    This is x11-specific API that was added back when clutter was out
    of tree. Just remove it and directly do what we want.

 clutter/clutter/x11/clutter-backend-x11.c |  77 ----------------
 clutter/clutter/x11/clutter-backend-x11.h |   3 -
 clutter/clutter/x11/clutter-event-x11.c   | 146 ------------------------------
 clutter/clutter/x11/clutter-x11.h         |   5 -
 src/backends/x11/meta-backend-x11.c       |   3 -
 5 files changed, 234 deletions(-)
---
diff --git a/clutter/clutter/x11/clutter-backend-x11.c b/clutter/clutter/x11/clutter-backend-x11.c
index df03fad4c..bdbfdc245 100644
--- a/clutter/clutter/x11/clutter-backend-x11.c
+++ b/clutter/clutter/x11/clutter-backend-x11.c
@@ -101,7 +101,6 @@ static const gchar *atom_names[] = {
 #define N_ATOM_NAMES G_N_ELEMENTS (atom_names)
 
 /* various flags corresponding to pre init setup calls */
-static gboolean _no_xevent_retrieval = FALSE;
 static gboolean clutter_enable_xinput = TRUE;
 static gboolean clutter_enable_argb = FALSE;
 static gboolean clutter_enable_stereo = FALSE;
@@ -452,30 +451,6 @@ _clutter_backend_x11_events_init (ClutterBackend *backend)
 
   CLUTTER_NOTE (EVENT, "initialising the event loop");
 
-  /* the event source is optional */
-  if (!_no_xevent_retrieval)
-    {
-      GSource *source;
-
-      source = _clutter_x11_event_source_new (backend_x11);
-
-      /* default priority for events
-       *
-       * XXX - at some point we'll have a common EventSource API that
-       * is created by the backend, and this code will most likely go
-       * into the default implementation of ClutterBackend
-       */
-      g_source_set_priority (source, CLUTTER_PRIORITY_EVENTS);
-
-      /* attach the source to the default context, and transfer the
-       * ownership to the GMainContext itself
-       */
-      g_source_attach (source, NULL);
-      g_source_unref (source);
-
-      backend_x11->event_source = source;
-    }
-
   clutter_backend_x11_create_device_manager (backend_x11);
 
   /* register keymap; unless we create a generic Keymap object, I'm
@@ -945,58 +920,6 @@ clutter_x11_set_display (Display *xdpy)
   _foreign_dpy= xdpy;
 }
 
-/**
- * clutter_x11_disable_event_retrieval:
- *
- * Disables the internal polling of X11 events in the main loop.
- *
- * Libraries or applications calling this function will be responsible of
- * polling all X11 events.
- *
- * You also must call clutter_x11_handle_event() to let Clutter process
- * events and maintain its internal state.
- *
- * This function can only be called before calling clutter_init().
- *
- * Even with event handling disabled, Clutter will still select
- * all the events required to maintain its internal state on the stage
- * Window; compositors using Clutter and input regions to pass events
- * through to application windows should not rely on an empty input
- * region, and should instead clear it themselves explicitly using the
- * XFixes extension.
- *
- * This function should not be normally used by applications.
- *
- * Since: 0.8
- */
-void
-clutter_x11_disable_event_retrieval (void)
-{
-  if (_clutter_context_is_initialized ())
-    {
-      g_warning ("%s() can only be used before calling clutter_init()",
-                 G_STRFUNC);
-      return;
-    }
-
-  _no_xevent_retrieval = TRUE;
-}
-
-/**
- * clutter_x11_has_event_retrieval:
- *
- * Queries the X11 backend to check if event collection has been disabled.
- *
- * Return value: TRUE if event retrival has been disabled. FALSE otherwise.
- *
- * Since: 0.8
- */
-gboolean
-clutter_x11_has_event_retrieval (void)
-{
-  return !_no_xevent_retrieval;
-}
-
 /**
  * clutter_x11_get_default_screen:
  *
diff --git a/clutter/clutter/x11/clutter-backend-x11.h b/clutter/clutter/x11/clutter-backend-x11.h
index 177c9d5e3..0cfccde48 100644
--- a/clutter/clutter/x11/clutter-backend-x11.h
+++ b/clutter/clutter/x11/clutter-backend-x11.h
@@ -84,7 +84,6 @@ struct _ClutterBackendX11
   GList *stages;
 
   /* event source */
-  GSource *event_source;
   GSList  *event_filters;
 
   /* props */
@@ -121,8 +120,6 @@ ClutterBackend *clutter_backend_x11_new (void);
 
 void            _clutter_backend_x11_events_init        (ClutterBackend *backend);
 
-GSource *       _clutter_x11_event_source_new   (ClutterBackendX11 *backend_x11);
-
 /* Private to glx/eglx backends */
 XVisualInfo *   _clutter_backend_x11_get_visual_info (ClutterBackendX11 *backend_x11);
 
diff --git a/clutter/clutter/x11/clutter-event-x11.c b/clutter/clutter/x11/clutter-event-x11.c
index 1ced9a477..9396ecee4 100644
--- a/clutter/clutter/x11/clutter-event-x11.c
+++ b/clutter/clutter/x11/clutter-event-x11.c
@@ -63,17 +63,6 @@
 static Window ParentEmbedderWin = None;
 #endif
 
-typedef struct _ClutterEventSource      ClutterEventSource;
-
-struct _ClutterEventSource
-{
-  GSource source;
-
-  ClutterBackendX11 *backend;
-
-  GPollFD event_poll_fd;
-};
-
 ClutterEventX11 *
 _clutter_event_x11_new (void)
 {
@@ -96,49 +85,6 @@ _clutter_event_x11_free (ClutterEventX11 *event_x11)
     g_slice_free (ClutterEventX11, event_x11);
 }
 
-static gboolean clutter_event_prepare  (GSource     *source,
-                                        gint        *timeout);
-static gboolean clutter_event_check    (GSource     *source);
-static gboolean clutter_event_dispatch (GSource     *source,
-                                        GSourceFunc  callback,
-                                        gpointer     user_data);
-
-static GSourceFuncs event_funcs = {
-  clutter_event_prepare,
-  clutter_event_check,
-  clutter_event_dispatch,
-  NULL
-};
-
-GSource *
-_clutter_x11_event_source_new (ClutterBackendX11 *backend_x11)
-{
-  ClutterEventSource *event_source;
-  int connection_number;
-  GSource *source;
-  gchar *name;
-
-  connection_number = ConnectionNumber (backend_x11->xdpy);
-  CLUTTER_NOTE (EVENT, "Connection number: %d", connection_number);
-
-  source = g_source_new (&event_funcs, sizeof (ClutterEventSource));
-  event_source = (ClutterEventSource *) source;
-
-  name = g_strdup_printf ("Clutter X11 Event (connection: %d)",
-                          connection_number);
-  g_source_set_name (source, name);
-  g_free (name);
-
-  event_source->backend = backend_x11;
-  event_source->event_poll_fd.fd = connection_number;
-  event_source->event_poll_fd.events = G_IO_IN;
-
-  g_source_add_poll (source, &event_source->event_poll_fd);
-  g_source_set_can_recurse (source, TRUE);
-
-  return source;
-}
-
 /**
  * clutter_x11_handle_event:
  * @xevent: pointer to XEvent structure
@@ -147,9 +93,6 @@ _clutter_x11_event_source_new (ClutterBackendX11 *backend_x11)
  * into external X11 event processing (for example, a GDK filter
  * function).
  *
- * If clutter_x11_disable_event_retrieval() has been called, you must
- * let this function process events to update Clutter's internal state.
- *
  * Return value: #ClutterX11FilterReturn. %CLUTTER_X11_FILTER_REMOVE
  *  indicates that Clutter has internally handled the event and the
  *  caller should do no further processing. %CLUTTER_X11_FILTER_CONTINUE
@@ -230,95 +173,6 @@ out:
   return result;
 }
 
-static gboolean
-clutter_event_prepare (GSource *source,
-                       gint    *timeout)
-{
-  ClutterBackendX11 *backend = ((ClutterEventSource *) source)->backend;
-  gboolean retval;
-
-  _clutter_threads_acquire_lock ();
-
-  *timeout = -1;
-  retval = (clutter_events_pending () || XPending (backend->xdpy));
-
-  _clutter_threads_release_lock ();
-
-  return retval;
-}
-
-static gboolean
-clutter_event_check (GSource *source)
-{
-  ClutterEventSource *event_source = (ClutterEventSource *) source;
-  ClutterBackendX11 *backend = event_source->backend;
-  gboolean retval;
-
-  _clutter_threads_acquire_lock ();
-
-  if (event_source->event_poll_fd.revents & G_IO_IN)
-    retval = (clutter_events_pending () || XPending (backend->xdpy));
-  else
-    retval = FALSE;
-
-  _clutter_threads_release_lock ();
-
-  return retval;
-}
-
-static void
-events_queue (ClutterBackendX11 *backend_x11)
-{
-  ClutterBackend *backend = CLUTTER_BACKEND (backend_x11);
-  Display *xdisplay = backend_x11->xdpy;
-  ClutterEvent *event;
-  XEvent xevent;
-
-  while (!clutter_events_pending () && XPending (xdisplay))
-    {
-      XNextEvent (xdisplay, &xevent);
-
-      event = clutter_event_new (CLUTTER_NOTHING);
-
-      XGetEventData (xdisplay, &xevent.xcookie);
-
-      if (_clutter_backend_translate_event (backend, &xevent, event))
-        _clutter_event_push (event, FALSE);
-      else
-        clutter_event_free (event);
-
-      XFreeEventData (xdisplay, &xevent.xcookie);
-    }
-}
-
-static gboolean
-clutter_event_dispatch (GSource     *source,
-                        GSourceFunc  callback,
-                        gpointer     user_data)
-{
-  ClutterBackendX11 *backend = ((ClutterEventSource *) source)->backend;
-  ClutterEvent *event;
-
-  _clutter_threads_acquire_lock ();
-
-  /*  Grab the event(s), translate and figure out double click.
-   *  The push onto queue (stack) if valid.
-  */
-  events_queue (backend);
-
-  /* Pop an event off the queue if any */
-  event = clutter_event_get ();
-  if (event != NULL)
-    {
-      /* forward the event into clutter for emission etc. */
-      _clutter_stage_queue_event (event->any.stage, event, FALSE);
-    }
-
-  _clutter_threads_release_lock ();
-
-  return TRUE;
-}
-
 /**
  * clutter_x11_get_current_event_time: (skip)
  *
diff --git a/clutter/clutter/x11/clutter-x11.h b/clutter/clutter/x11/clutter-x11.h
index 831f9f30c..a4a2b6e0c 100644
--- a/clutter/clutter/x11/clutter-x11.h
+++ b/clutter/clutter/x11/clutter-x11.h
@@ -120,11 +120,6 @@ void         clutter_x11_remove_filter (ClutterX11FilterFunc func,
 CLUTTER_EXPORT
 ClutterX11FilterReturn clutter_x11_handle_event (XEvent *xevent);
 
-CLUTTER_EXPORT
-void     clutter_x11_disable_event_retrieval (void);
-CLUTTER_EXPORT
-gboolean clutter_x11_has_event_retrieval (void);
-
 CLUTTER_EXPORT
 ClutterStage *clutter_x11_get_stage_from_window (Window win);
 
diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c
index ff9ad400f..f7cf4ccb1 100644
--- a/src/backends/x11/meta-backend-x11.c
+++ b/src/backends/x11/meta-backend-x11.c
@@ -796,9 +796,6 @@ meta_backend_x11_init (MetaBackendX11 *x11)
    * to hopefully call it before any other use of XLib.
    */
   XInitThreads();
-
-  /* We do X11 event retrieval ourselves */
-  clutter_x11_disable_event_retrieval ();
 }
 
 Display *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]