input-device: Move select_stage_events() to a vfunc
authorEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 17 Jan 2011 17:01:58 +0000 (17:01 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Fri, 21 Jan 2011 10:25:43 +0000 (10:25 +0000)
Don't use a signal, use a virtual function.

clutter/clutter-device-manager-private.h
clutter/clutter-input-device.c
clutter/x11/clutter-input-device-core-x11.c
clutter/x11/clutter-input-device-xi2.c

index 56dfc5a..ec5a2fc 100644 (file)
@@ -109,6 +109,10 @@ struct _ClutterInputDevice
 struct _ClutterInputDeviceClass
 {
   GObjectClass parent_class;
+
+  void (* select_stage_events) (ClutterInputDevice *device,
+                                ClutterStage       *stage,
+                                gint                event_mask);
 };
 
 /* device manager */
index 415efcf..0d2b81f 100644 (file)
@@ -65,17 +65,8 @@ enum
   PROP_LAST
 };
 
-enum
-{
-  SELECT_STAGE_EVENTS,
-
-  LAST_SIGNAL
-};
-
 static GParamSpec *obj_props[PROP_LAST] = { NULL, };
 
-static guint device_signals[LAST_SIGNAL] = { 0, };
-
 G_DEFINE_TYPE (ClutterInputDevice, clutter_input_device, G_TYPE_OBJECT);
 
 static void
@@ -298,17 +289,6 @@ clutter_input_device_class_init (ClutterInputDeviceClass *klass)
   gobject_class->set_property = clutter_input_device_set_property;
   gobject_class->get_property = clutter_input_device_get_property;
   g_object_class_install_properties (gobject_class, PROP_LAST, obj_props);
-
-  device_signals[SELECT_STAGE_EVENTS] =
-    g_signal_new (I_("select-stage-events"),
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_FIRST,
-                  0,
-                  NULL, NULL,
-                  _clutter_marshal_VOID__OBJECT_INT,
-                  G_TYPE_NONE, 2,
-                  CLUTTER_TYPE_STAGE,
-                  G_TYPE_INT);
 }
 
 static void
@@ -1100,7 +1080,9 @@ _clutter_input_device_select_stage_events (ClutterInputDevice *device,
                                            ClutterStage       *stage,
                                            gint                event_mask)
 {
-  g_signal_emit (device, device_signals[SELECT_STAGE_EVENTS], 0,
-                 stage,
-                 event_mask);
+  ClutterInputDeviceClass *device_class;
+
+  device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
+  if (device_class->select_stage_events != NULL)
+    device_class->select_stage_events (device, stage, event_mask);
 }
index 4c1bf2f..5d729e9 100644 (file)
@@ -178,13 +178,12 @@ static void
 clutter_input_device_x11_class_init (ClutterInputDeviceX11Class *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  ClutterInputDeviceClass *device_class = CLUTTER_INPUT_DEVICE_CLASS (klass);
 
   gobject_class->constructed = clutter_input_device_x11_constructed;
   gobject_class->dispose = clutter_input_device_x11_dispose;
 
-  g_signal_override_class_handler ("select-stage-events",
-                                   CLUTTER_TYPE_INPUT_DEVICE_X11,
-                                   G_CALLBACK (clutter_input_device_x11_select_stage_events));
+  device_class->select_stage_events = clutter_input_device_x11_select_stage_events;
 }
 
 static void
index ac90b25..45d5321 100644 (file)
@@ -96,12 +96,11 @@ static void
 clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  ClutterInputDeviceClass *device_class = CLUTTER_INPUT_DEVICE_CLASS (klass);
 
   gobject_class->constructed = clutter_input_device_xi2_constructed;
 
-  g_signal_override_class_handler ("select-stage-events",
-                                   CLUTTER_TYPE_INPUT_DEVICE_XI2,
-                                   G_CALLBACK (clutter_input_device_xi2_select_stage_events));
+  device_class->select_stage_events = clutter_input_device_xi2_select_stage_events;
 }
 
 static void