[gnome-games/wip/aplazas/gamepad-event: 4/11] gamepad: Add the 'event' signal to Gamepad



commit 95f7b0010380edda7ea0e40eb87427edf9792dbf
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Fri May 12 08:37:51 2017 +0200

    gamepad: Add the 'event' signal to Gamepad
    
    This will be used to propagate gamepad events from the raw gamepad.

 src/gamepad/gamepad.c    |   15 +++++++++++++++
 src/gamepad/gamepad.vapi |    1 +
 2 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/src/gamepad/gamepad.c b/src/gamepad/gamepad.c
index 6183acb..1b1b4e1 100644
--- a/src/gamepad/gamepad.c
+++ b/src/gamepad/gamepad.c
@@ -3,6 +3,7 @@
 #include "gamepad.h"
 
 #include <stdlib.h>
+#include "../event/event.h"
 #include "gamepad-mapping.h"
 #include "gamepad-mappings-manager.h"
 
@@ -16,6 +17,7 @@ struct _GamesGamepad {
 G_DEFINE_TYPE (GamesGamepad, games_gamepad, G_TYPE_OBJECT)
 
 enum {
+  SIGNAL_EVENT,
   SIGNAL_BUTTON_EVENT,
   SIGNAL_AXIS_EVENT,
   SIGNAL_UNPLUGGED,
@@ -278,6 +280,19 @@ static void games_gamepad_class_init (GamesGamepadClass *klass) {
   G_OBJECT_CLASS (klass)->finalize = finalize;
 
   /**
+   * GamesGamepad::event:
+   * @event: the event emitted by the gamepad
+   **/
+  signals[SIGNAL_EVENT] =
+    g_signal_new ("event",
+                  GAMES_TYPE_RAW_GAMEPAD,
+                  G_SIGNAL_RUN_LAST,
+                  0, NULL, NULL,
+                  g_cclosure_marshal_VOID__BOXED,
+                  G_TYPE_NONE, 1,
+                  GAMES_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
+
+  /**
    * GamesGamepad::axis-event:
    * @button: the code representing the button
    * @value: %TRUE if the button is pressed, %FALSE otherwise
diff --git a/src/gamepad/gamepad.vapi b/src/gamepad/gamepad.vapi
index 42e7aa7..21bcc0d 100644
--- a/src/gamepad/gamepad.vapi
+++ b/src/gamepad/gamepad.vapi
@@ -2,6 +2,7 @@
 
 [CCode (cheader_filename = "gamepad.h")]
 private class Games.Gamepad : GLib.Object {
+       public signal void event (Event event);
        public signal void button_event (StandardGamepadButton button, bool value);
        public signal void axis_event (StandardGamepadAxis axis, double value);
        public signal void unplugged ();


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