xserver: Branch 'master' - 2 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Sep 24 17:40:58 UTC 2020


 hw/xfree86/common/xf86Helper.c |   14 ++++++++++++++
 hw/xfree86/common/xf86Module.h |    2 +-
 hw/xfree86/common/xf86Xinput.h |    5 +++++
 mi/mi.h                        |    6 ++++++
 mi/mieq.c                      |   18 ++++++++++++++++++
 5 files changed, 44 insertions(+), 1 deletion(-)

New commits:
commit 4c00369024c9754e670fca37804711fef2980e2f
Author: Povilas Kanapickas <povilas at radix.lt>
Date:   Tue Sep 22 20:53:49 2020 +0300

    Bump input minor ABI due to addition of input event drain callback
    
    Signed-off-by: Povilas Kanapickas <povilas at radix.lt>

diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index f5496182d..af1fe4187 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -75,7 +75,7 @@
  */
 #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
 #define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(25, 2)
-#define ABI_XINPUT_VERSION	SET_ABI_VERSION(24, 1)
+#define ABI_XINPUT_VERSION	SET_ABI_VERSION(24, 2)
 #define ABI_EXTENSION_VERSION	SET_ABI_VERSION(10, 0)
 
 #define MODINFOSTRING1	0xef23fdc5
commit 5eb985e3531b69d3ddc4dc0d4b69b4280b1626f8
Author: Povilas Kanapickas <povilas at radix.lt>
Date:   Thu Sep 17 00:55:17 2020 +0300

    mi: Add a callback to notify driver about input event submission
    
    This is useful for mock input drivers that control the server in
    integration tests. Given that input submission happens on a different
    thread than processing, it's otherwise impossible for the driver to
    synchronize with the completion of the processing of submitted events.
    
    Signed-off-by: Povilas Kanapickas <povilas at radix.lt>

diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index 6bdbf7c15..31aa068e0 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -39,6 +39,7 @@
 #endif
 
 #include <X11/X.h>
+#include "mi.h"
 #include "os.h"
 #include "servermd.h"
 #include "pixmapstr.h"
@@ -1738,3 +1739,16 @@ xf86UpdateDesktopDimensions(void)
 {
     update_desktop_dimensions();
 }
+
+
+void
+xf86AddInputEventDrainCallback(CallbackProcPtr callback, void *param)
+{
+    mieqAddCallbackOnDrained(callback, param);
+}
+
+void
+xf86RemoveInputEventDrainCallback(CallbackProcPtr callback, void *param)
+{
+    mieqRemoveCallbackOnDrained(callback, param);
+}
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 0024053c7..749a80d4b 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -199,6 +199,11 @@ xf86VIDrvMsgVerb(InputInfoPtr dev,
                  MessageType type, int verb, const char *format, va_list args)
 _X_ATTRIBUTE_PRINTF(4, 0);
 
+extern _X_EXPORT void xf86AddInputEventDrainCallback(CallbackProcPtr callback,
+                                                     void *param);
+extern _X_EXPORT void xf86RemoveInputEventDrainCallback(CallbackProcPtr callback,
+                                                        void *param);
+
 /* xf86Option.c */
 extern _X_EXPORT void
 xf86CollectInputOptions(InputInfoPtr pInfo, const char **defaultOpts);
diff --git a/mi/mi.h b/mi/mi.h
index 2cd3066c1..8b0a231ca 100644
--- a/mi/mi.h
+++ b/mi/mi.h
@@ -205,6 +205,12 @@ extern _X_EXPORT void mieqProcessDeviceEvent(DeviceIntPtr /* dev */ ,
 extern _X_EXPORT void mieqProcessInputEvents(void
     );
 
+extern _X_EXPORT void mieqAddCallbackOnDrained(CallbackProcPtr callback,
+                                               void *param);
+
+extern _X_EXPORT void mieqRemoveCallbackOnDrained(CallbackProcPtr callback,
+                                                  void *param);
+
 extern DeviceIntPtr CopyGetMasterEvent(DeviceIntPtr /* sdev */ ,
                                        InternalEvent * /* original */ ,
                                        InternalEvent *  /* copy */
diff --git a/mi/mieq.c b/mi/mieq.c
index 09b71b639..bcd62d572 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -87,6 +87,8 @@ typedef struct _EventQueue {
 
 static EventQueueRec miEventQueue;
 
+static CallbackListPtr miCallbacksWhenDrained = NULL;
+
 static size_t
 mieqNumEnqueued(EventQueuePtr eventQueue)
 {
@@ -565,5 +567,21 @@ mieqProcessInputEvents(void)
 
     inProcessInputEvents = FALSE;
 
+    CallCallbacks(&miCallbacksWhenDrained, NULL);
+
+    input_unlock();
+}
+
+void mieqAddCallbackOnDrained(CallbackProcPtr callback, void *param)
+{
+    input_lock();
+    AddCallback(&miCallbacksWhenDrained, callback, param);
+    input_unlock();
+}
+
+void mieqRemoveCallbackOnDrained(CallbackProcPtr callback, void *param)
+{
+    input_lock();
+    DeleteCallback(&miCallbacksWhenDrained, callback, param);
     input_unlock();
 }


More information about the xorg-commit mailing list