Merge upstream branch 2.31.1 into branch origin/tizen
[platform/upstream/at-spi2-core.git] / registryd / deviceeventcontroller.c
index a7d3769..686f2cd 100644 (file)
@@ -23,7 +23,7 @@
 
 /* deviceeventcontroller.c: implement the DeviceEventController interface */
 
-#include <config.h>
+#include "config.h"
 
 #undef  SPI_XKB_DEBUG
 #undef  SPI_DEBUG
 #include <dbus/dbus.h>
 
 #include "paths.h"
-#include "keymasks.h"
 #include "de-types.h"
 #include "de-marshaller.h"
+#include "keymasks.h"
+
 #ifdef HAVE_X11
 #include "display.h"
 #include "event-source.h"
@@ -66,15 +67,13 @@ struct _SpiPoint {
     gint y;
 };
 typedef struct _SpiPoint SpiPoint;
+
 static unsigned int mouse_mask_state = 0;
-#ifdef HAVE_X11
 static unsigned int key_modifier_mask =
-  Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | ShiftMask | LockMask | ControlMask | SPI_KEYMASK_NUMLOCK;
-static unsigned int _numlock_physical_mask = Mod2Mask; /* a guess, will be reset */
-#else
-static unsigned int key_modifier_mask = 255;
-static unsigned int _numlock_physical_mask = (1<<4);
-#endif
+  SPI_KEYMASK_MOD1 | SPI_KEYMASK_MOD2 | SPI_KEYMASK_MOD3 | SPI_KEYMASK_MOD4 |
+  SPI_KEYMASK_MOD5 | SPI_KEYMASK_SHIFT | SPI_KEYMASK_SHIFTLOCK |
+  SPI_KEYMASK_CONTROL | SPI_KEYMASK_NUMLOCK;
+static unsigned int _numlock_physical_mask = SPI_KEYMASK_MOD2; /* a guess, will be reset */
 
 static gboolean have_mouse_listener = FALSE;
 static gboolean have_mouse_event_listener = FALSE;
@@ -211,7 +210,7 @@ spi_dec_plat_emit_modifier_event (SpiDEController *controller, guint prev_mask,
   SpiDEControllerClass *klass;
   klass = SPI_DEVICE_EVENT_CONTROLLER_GET_CLASS (controller);
   if (klass->plat.emit_modifier_event)
-    return klass->plat.emit_modifier_event (controller, prev_mask, current_mask);
+    klass->plat.emit_modifier_event (controller, prev_mask, current_mask);
 }
 
 static void
@@ -223,7 +222,7 @@ spi_dec_plat_generate_mouse_event (SpiDEController *controller,
   SpiDEControllerClass *klass;
   klass = SPI_DEVICE_EVENT_CONTROLLER_GET_CLASS (controller);
   if (klass->plat.generate_mouse_event)
-    return klass->plat.generate_mouse_event (controller, x, y, eventName);
+    klass->plat.generate_mouse_event (controller, x, y, eventName);
 }
 
 DBusMessage *
@@ -639,12 +638,7 @@ handle_keygrab (SpiDEController         *controller,
   grab_mask.mod_mask = key_listener->mask;
   if (g_slist_length (key_listener->keys) == 0) /* special case means AnyKey/AllKeys */
     {
-#ifdef HAVE_X11
-      grab_mask.key_val = AnyKey;
-#else
-      grab_mask.key_val = 0L;
-#endif
-
+      grab_mask.key_val = 0L; /* AnyKey */
 #ifdef SPI_DEBUG
       fprintf (stderr, "AnyKey grab!");
 #endif
@@ -933,6 +927,7 @@ send_and_allow_reentry (DBusConnection *bus, DBusMessage *message, int timeout,
       {
         const char *dest = dbus_message_get_destination (message);
         GSList *l;
+        dbus_bool_t result;
         gchar *bus_name_dup;
         dbus_message_ref (message);
         dbus_pending_call_set_notify (pending, reset_hung_process, message,
@@ -942,9 +937,9 @@ send_and_allow_reentry (DBusConnection *bus, DBusMessage *message, int timeout,
                                                 "Ping");
         if (!message)
           return NULL;
-        dbus_connection_send_with_reply (bus, message, &pending, -1);
+        result = dbus_connection_send_with_reply (bus, message, &pending, -1);
         dbus_message_unref (message);
-        if (!pending)
+        if (!result || !pending)
           return NULL;
         bus_name_dup = g_strdup (dest);
         dbus_pending_call_set_notify (pending, reset_hung_process_from_ping,
@@ -1763,17 +1758,19 @@ impl_generate_keyboard_event (DBusConnection *bus, DBusMessage *message, void *u
               * in our arg list; it can contain either
               * a keycode or a keysym.
               */
-#ifdef HAVE_X11
-             spi_dec_synth_keysym (controller, (KeySym) keycode);
-#else
-             spi_dec_synth_keysym (controller, (long) keycode);
-#endif
+             spi_dec_synth_keysym (controller, keycode);
              break;
       case Accessibility_KEY_STRING:
              if (!spi_dec_plat_synth_keystring (controller, synth_type, keycode, keystring))
                      fprintf (stderr, "Keystring synthesis failure, string=%s\n",
                               keystring);
              break;
+      case Accessibility_KEY_LOCKMODIFIERS:
+             spi_dec_plat_lock_modifiers (controller, keycode);
+             break;
+      case Accessibility_KEY_UNLOCKMODIFIERS:
+             spi_dec_plat_unlock_modifiers (controller, keycode);
+             break;
     }
   reply = dbus_message_new_method_return (message);
   return reply;