aboutsummaryrefslogtreecommitdiff
path: root/src/MCE.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/MCE.c')
-rw-r--r--src/MCE.c1264
1 files changed, 1264 insertions, 0 deletions
diff --git a/src/MCE.c b/src/MCE.c
new file mode 100644
index 00000000..c8a6076a
--- /dev/null
+++ b/src/MCE.c
@@ -0,0 +1,1264 @@
+
+#include <src/MCE.h>
+#include <dbus/dbus-glib-lowlevel.h>
+#include <dbus/dbus-glib.h>
+#include <gee/iterable.h>
+#include <gee/iterator.h>
+#include <gee/collection.h>
+#include <stdio.h>
+#include <manager.h>
+#include <key_usage_counter.h>
+#include <string.h>
+
+
+
+
+struct _ContextKitMCEProviderPrivate {
+ DBusGConnection* conn;
+ DBusGProxy* mce_request;
+ DBusGProxy* mce_signal;
+ ContextProviderStringSet* all_keys;
+ ContextProviderStringSet* orientation_keys;
+ ContextProviderStringSet* display_status_keys;
+ ContextProviderStringSet* device_mode_keys;
+ ContextProviderStringSet* call_state_keys;
+ ContextProviderStringSet* inactivity_status_keys;
+};
+
+#define CONTEXT_KIT_MCE_PROVIDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CONTEXT_KIT_MCE_TYPE_PROVIDER, ContextKitMCEProviderPrivate))
+enum {
+ CONTEXT_KIT_MCE_PROVIDER_DUMMY_PROPERTY
+};
+static void context_kit_mce_provider_error_for_subset (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavailable_keys, ContextProviderStringSet* intersect_with);
+static gint context_kit_mce_provider_abs (ContextKitMCEProvider* self, gint n);
+static gint context_kit_mce_provider_calculate_orientation (ContextKitMCEProvider* self, gint x, gint y);
+void _dynamic_get_device_orientation1 (DBusGProxy* self, char** param1, char** param2, char** param3, gint* param4, gint* param5, gint* param6, GError** error);
+static void context_kit_mce_provider_get_orientation (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail);
+void _dynamic_get_display_status2 (DBusGProxy* self, char** param1, GError** error);
+static void context_kit_mce_provider_get_display_status (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail);
+void _dynamic_get_device_mode3 (DBusGProxy* self, char** param1, GError** error);
+static void context_kit_mce_provider_get_device_mode (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail);
+void _dynamic_get_call_state4 (DBusGProxy* self, char** param1, char** param2, GError** error);
+static void context_kit_mce_provider_get_call_state (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail);
+void _dynamic_get_inactivity_status5 (DBusGProxy* self, gboolean* param1, GError** error);
+static void context_kit_mce_provider_get_inactivity_status (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail);
+static GValue* _g_value_dup (GValue* self);
+static void context_kit_mce_provider_insert_orientation_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const ContextKitMCEDeviceOrientation* orientation, GHashTable* ret, GeeArrayList* unavail);
+static void context_kit_mce_provider_insert_display_status_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const char* display_status, GHashTable* ret, GeeArrayList* unavail);
+static void context_kit_mce_provider_insert_device_mode_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const char* device_mode, GHashTable* ret, GeeArrayList* unavail);
+static void context_kit_mce_provider_insert_call_state_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const char* state, const char* type, GHashTable* ret, GeeArrayList* unavail);
+static void context_kit_mce_provider_insert_inactivity_status_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, gboolean status, GHashTable* ret, GeeArrayList* unavail);
+static void context_kit_mce_provider_orientation_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* rotation, const char* stand, const char* facing, gint32 x, gint32 y, gint32 z);
+static void context_kit_mce_provider_display_status_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* display_status);
+static void context_kit_mce_provider_device_mode_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* device_mode);
+static void context_kit_mce_provider_call_state_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* state, const char* type);
+static void context_kit_mce_provider_inactivity_status_changed (ContextKitMCEProvider* self, DBusGProxy* sender, gboolean status);
+static void context_kit_mce_provider_real_get (ContextProviderProvider* base, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail);
+static void context_kit_mce_provider_ensure_mce_signal_exists (ContextKitMCEProvider* self);
+static void _context_kit_mce_provider_orientation_changed_dynamic_sig_device_orientation_ind0_ (DBusGProxy* _sender, const char* rotation, const char* stand, const char* facing, gint32 x, gint32 y, gint32 z, gpointer self);
+void _dynamic_sig_device_orientation_ind1_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_display_status_changed_dynamic_display_status_ind2_ (DBusGProxy* _sender, const char* display_status, gpointer self);
+void _dynamic_display_status_ind3_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_device_mode_changed_dynamic_sig_device_mode_ind4_ (DBusGProxy* _sender, const char* device_mode, gpointer self);
+void _dynamic_sig_device_mode_ind5_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_call_state_changed_dynamic_sig_call_state_ind6_ (DBusGProxy* _sender, const char* state, const char* type, gpointer self);
+void _dynamic_sig_call_state_ind7_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_inactivity_status_changed_dynamic_system_inactivity_ind8_ (DBusGProxy* _sender, gboolean status, gpointer self);
+void _dynamic_system_inactivity_ind9_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void context_kit_mce_provider_real_keys_subscribed (ContextProviderProvider* base, ContextProviderStringSet* keys);
+static void _context_kit_mce_provider_orientation_changed_dynamic_sig_device_orientation_ind10_ (DBusGProxy* _sender, const char* rotation, const char* stand, const char* facing, gint32 x, gint32 y, gint32 z, gpointer self);
+void _dynamic_sig_device_orientation_ind11_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_display_status_changed_dynamic_display_status_ind12_ (DBusGProxy* _sender, const char* display_status, gpointer self);
+void _dynamic_display_status_ind13_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_device_mode_changed_dynamic_sig_device_mode_ind14_ (DBusGProxy* _sender, const char* device_mode, gpointer self);
+void _dynamic_sig_device_mode_ind15_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_call_state_changed_dynamic_sig_call_state_ind16_ (DBusGProxy* _sender, const char* state, const char* type, gpointer self);
+void _dynamic_sig_call_state_ind17_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void _context_kit_mce_provider_inactivity_status_changed_dynamic_system_inactivity_ind18_ (DBusGProxy* _sender, gboolean status, gpointer self);
+void _dynamic_system_inactivity_ind19_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data);
+static void context_kit_mce_provider_real_keys_unsubscribed (ContextProviderProvider* base, ContextProviderStringSet* keys, ContextProviderStringSet* keys_remaining);
+static ContextProviderStringSet* context_kit_mce_provider_real_provided_keys (ContextProviderProvider* base);
+static gpointer context_kit_mce_provider_parent_class = NULL;
+static ContextProviderProviderIface* context_kit_mce_provider_context_provider_provider_parent_iface = NULL;
+static void context_kit_mce_provider_finalize (GObject* obj);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static int _vala_strcmp0 (const char * str1, const char * str2);
+
+static const char* CONTEXT_KIT_MCE_PROVIDER_keys[] = {CONTEXT_KIT_MCE_PROVIDER_key_edge_up, CONTEXT_KIT_MCE_PROVIDER_key_facing_up, CONTEXT_KIT_MCE_PROVIDER_key_display_state, CONTEXT_KIT_MCE_PROVIDER_key_profile_name, CONTEXT_KIT_MCE_PROVIDER_key_is_flight_mode, CONTEXT_KIT_MCE_PROVIDER_key_is_emergency_mode, CONTEXT_KIT_MCE_PROVIDER_key_in_active_use};
+
+static void g_cclosure_user_marshal_VOID__STRING_STRING_STRING_INT_INT_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+
+void context_kit_mce_device_orientation_copy (const ContextKitMCEDeviceOrientation* self, ContextKitMCEDeviceOrientation* dest) {
+ const char* _tmp2;
+ const char* _tmp1;
+ const char* _tmp0;
+ _tmp2 = NULL;
+ _tmp1 = NULL;
+ _tmp0 = NULL;
+ dest->rotation = (_tmp0 = self->rotation, (_tmp0 == NULL) ? NULL : g_strdup (_tmp0));
+ dest->stand = (_tmp1 = self->stand, (_tmp1 == NULL) ? NULL : g_strdup (_tmp1));
+ dest->facing = (_tmp2 = self->facing, (_tmp2 == NULL) ? NULL : g_strdup (_tmp2));
+ dest->x = self->x;
+ dest->y = self->y;
+ dest->z = self->z;
+}
+
+
+void context_kit_mce_device_orientation_destroy (ContextKitMCEDeviceOrientation* self) {
+ self->rotation = (g_free (self->rotation), NULL);
+ self->stand = (g_free (self->stand), NULL);
+ self->facing = (g_free (self->facing), NULL);
+}
+
+
+ContextKitMCEDeviceOrientation* context_kit_mce_device_orientation_dup (const ContextKitMCEDeviceOrientation* self) {
+ ContextKitMCEDeviceOrientation* dup;
+ dup = g_new0 (ContextKitMCEDeviceOrientation, 1);
+ context_kit_mce_device_orientation_copy (self, dup);
+ return dup;
+}
+
+
+void context_kit_mce_device_orientation_free (ContextKitMCEDeviceOrientation* self) {
+ context_kit_mce_device_orientation_destroy (self);
+ g_free (self);
+}
+
+
+GType context_kit_mce_device_orientation_get_type (void) {
+ static GType context_kit_mce_device_orientation_type_id = 0;
+ if (context_kit_mce_device_orientation_type_id == 0) {
+ context_kit_mce_device_orientation_type_id = g_boxed_type_register_static ("ContextKitMCEDeviceOrientation", (GBoxedCopyFunc) context_kit_mce_device_orientation_dup, (GBoxedFreeFunc) context_kit_mce_device_orientation_free);
+ }
+ return context_kit_mce_device_orientation_type_id;
+}
+
+
+static void context_kit_mce_provider_error_for_subset (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavailable_keys, ContextProviderStringSet* intersect_with) {
+ ContextProviderStringSet* intersection;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavailable_keys != NULL);
+ g_return_if_fail (intersect_with != NULL);
+ intersection = context_provider_string_set_new_intersection (keys, intersect_with);
+ {
+ GeeArrayList* _tmp0;
+ GeeIterator* _tmp1;
+ GeeIterator* _key_it;
+ _tmp0 = NULL;
+ _tmp1 = NULL;
+ _key_it = (_tmp1 = gee_iterable_iterator ((GeeIterable*) (_tmp0 = context_provider_string_set_to_array (intersection))), (_tmp0 == NULL) ? NULL : (_tmp0 = (g_object_unref (_tmp0), NULL)), _tmp1);
+ while (gee_iterator_next (_key_it)) {
+ char* key;
+ GValue _tmp2 = {0};
+ GValue nonsense;
+ key = (char*) gee_iterator_get (_key_it);
+ nonsense = (g_value_init (&_tmp2, G_TYPE_BOOLEAN), _tmp2);
+ g_value_set_boolean (&nonsense, FALSE);
+ gee_collection_add ((GeeCollection*) unavailable_keys, key);
+ key = (g_free (key), NULL);
+ G_IS_VALUE (&nonsense) ? (g_value_unset (&nonsense), NULL) : NULL;
+ }
+ (_key_it == NULL) ? NULL : (_key_it = (g_object_unref (_key_it), NULL));
+ }
+ (intersection == NULL) ? NULL : (intersection = (context_provider_string_set_unref (intersection), NULL));
+}
+
+
+static gint context_kit_mce_provider_abs (ContextKitMCEProvider* self, gint n) {
+ g_return_val_if_fail (self != NULL, 0);
+ if (n > 0) {
+ return n;
+ }
+ return -n;
+}
+
+
+static gint context_kit_mce_provider_calculate_orientation (ContextKitMCEProvider* self, gint x, gint y) {
+ g_return_val_if_fail (self != NULL, 0);
+ if (context_kit_mce_provider_abs (self, x) > context_kit_mce_provider_abs (self, y)) {
+ if (x > 0) {
+ /* Right side up*/
+ return 3;
+ } else {
+ /* Left side up*/
+ return 2;
+ }
+ } else {
+ if (context_kit_mce_provider_abs (self, y) > context_kit_mce_provider_abs (self, x)) {
+ if (y > 0) {
+ /* Bottom side up*/
+ return 4;
+ } else {
+ /* Top side up*/
+ return 1;
+ }
+ }
+ }
+ /* Undefined*/
+ return 0;
+}
+
+
+void _dynamic_get_device_orientation1 (DBusGProxy* self, char** param1, char** param2, char** param3, gint* param4, gint* param5, gint* param6, GError** error) {
+ dbus_g_proxy_call (self, "get_device_orientation", error, G_TYPE_INVALID, G_TYPE_STRING, param1, G_TYPE_STRING, param2, G_TYPE_STRING, param3, G_TYPE_INT, param4, G_TYPE_INT, param5, G_TYPE_INT, param6, G_TYPE_INVALID);
+ if (*error) {
+ return;
+ }
+}
+
+
+/*
+Fetches orientation information from MCE.
+*/
+static void context_kit_mce_provider_get_orientation (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail) {
+ GError * inner_error;
+ ContextKitMCEDeviceOrientation _tmp0 = {0};
+ ContextKitMCEDeviceOrientation orientation;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ inner_error = NULL;
+ if (context_provider_string_set_is_disjoint (keys, self->priv->orientation_keys)) {
+ return;
+ }
+ orientation = (memset (&_tmp0, 0, sizeof (ContextKitMCEDeviceOrientation)), _tmp0);
+ {
+ char* _tmp6;
+ char* _tmp5;
+ char* _tmp4;
+ char* _tmp3;
+ char* _tmp2;
+ char* _tmp1;
+ _tmp6 = NULL;
+ _tmp5 = NULL;
+ _tmp4 = NULL;
+ _tmp3 = NULL;
+ _tmp2 = NULL;
+ _tmp1 = NULL;
+ ((_dynamic_get_device_orientation1 (self->priv->mce_request, &_tmp1, &_tmp3, &_tmp5, &orientation.x, &orientation.y, &orientation.z, &inner_error), orientation.rotation = (_tmp2 = _tmp1, orientation.rotation = (g_free (orientation.rotation), NULL), _tmp2)), orientation.stand = (_tmp4 = _tmp3, orientation.stand = (g_free (orientation.stand), NULL), _tmp4));
+ orientation.facing = (_tmp6 = _tmp5, orientation.facing = (g_free (orientation.facing), NULL), _tmp6);
+ if (inner_error != NULL) {
+ goto __catch1_g_error;
+ goto __finally1;
+ }
+ }
+ goto __finally1;
+ __catch1_g_error:
+ {
+ GError * ex;
+ ex = inner_error;
+ inner_error = NULL;
+ {
+ fprintf (stdout, "MCE Provider Error: %s\n", ex->message);
+ context_kit_mce_provider_error_for_subset (self, keys, ret, unavail, self->priv->orientation_keys);
+ (ex == NULL) ? NULL : (ex = (g_error_free (ex), NULL));
+ context_kit_mce_device_orientation_destroy (&orientation);
+ return;
+ }
+ }
+ __finally1:
+ if (inner_error != NULL) {
+ context_kit_mce_device_orientation_destroy (&orientation);
+ g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
+ g_clear_error (&inner_error);
+ return;
+ }
+ g_debug ("MCE.vala:113: Got orientation %s %s %s (%d,%d,%d)", orientation.rotation, orientation.stand, orientation.facing, orientation.x, orientation.y, orientation.z);
+ context_kit_mce_provider_insert_orientation_to_map (self, keys, &orientation, ret, unavail);
+ context_kit_mce_device_orientation_destroy (&orientation);
+}
+
+
+void _dynamic_get_display_status2 (DBusGProxy* self, char** param1, GError** error) {
+ dbus_g_proxy_call (self, "get_display_status", error, G_TYPE_INVALID, G_TYPE_STRING, param1, G_TYPE_INVALID);
+ if (*error) {
+ return;
+ }
+}
+
+
+/*
+Fetches display status information from MCE.
+*/
+static void context_kit_mce_provider_get_display_status (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail) {
+ GError * inner_error;
+ char* display_status;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ inner_error = NULL;
+ if (context_provider_string_set_is_disjoint (keys, self->priv->display_status_keys)) {
+ return;
+ }
+ display_status = NULL;
+ {
+ char* _tmp1;
+ char* _tmp0;
+ _tmp1 = NULL;
+ _tmp0 = NULL;
+ _dynamic_get_display_status2 (self->priv->mce_request, &_tmp0, &inner_error);
+ display_status = (_tmp1 = _tmp0, display_status = (g_free (display_status), NULL), _tmp1);
+ if (inner_error != NULL) {
+ goto __catch2_g_error;
+ goto __finally2;
+ }
+ }
+ goto __finally2;
+ __catch2_g_error:
+ {
+ GError * ex;
+ ex = inner_error;
+ inner_error = NULL;
+ {
+ fprintf (stdout, "MCE Provider Error: %s\n", ex->message);
+ context_kit_mce_provider_error_for_subset (self, keys, ret, unavail, self->priv->display_status_keys);
+ (ex == NULL) ? NULL : (ex = (g_error_free (ex), NULL));
+ display_status = (g_free (display_status), NULL);
+ return;
+ }
+ }
+ __finally2:
+ if (inner_error != NULL) {
+ display_status = (g_free (display_status), NULL);
+ g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
+ g_clear_error (&inner_error);
+ return;
+ }
+ g_debug ("MCE.vala:137: Got display status %s", display_status);
+ context_kit_mce_provider_insert_display_status_to_map (self, keys, display_status, ret, unavail);
+ display_status = (g_free (display_status), NULL);
+}
+
+
+void _dynamic_get_device_mode3 (DBusGProxy* self, char** param1, GError** error) {
+ dbus_g_proxy_call (self, "get_device_mode", error, G_TYPE_INVALID, G_TYPE_STRING, param1, G_TYPE_INVALID);
+ if (*error) {
+ return;
+ }
+}
+
+
+/*
+Fetches device mode information from MCE.
+*/
+static void context_kit_mce_provider_get_device_mode (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail) {
+ GError * inner_error;
+ char* device_mode;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ inner_error = NULL;
+ if (context_provider_string_set_is_disjoint (keys, self->priv->device_mode_keys)) {
+ return;
+ }
+ device_mode = NULL;
+ {
+ char* _tmp1;
+ char* _tmp0;
+ _tmp1 = NULL;
+ _tmp0 = NULL;
+ _dynamic_get_device_mode3 (self->priv->mce_request, &_tmp0, &inner_error);
+ device_mode = (_tmp1 = _tmp0, device_mode = (g_free (device_mode), NULL), _tmp1);
+ if (inner_error != NULL) {
+ goto __catch3_g_error;
+ goto __finally3;
+ }
+ }
+ goto __finally3;
+ __catch3_g_error:
+ {
+ GError * ex;
+ ex = inner_error;
+ inner_error = NULL;
+ {
+ fprintf (stdout, "MCE Provider Error: %s\n", ex->message);
+ context_kit_mce_provider_error_for_subset (self, keys, ret, unavail, self->priv->device_mode_keys);
+ (ex == NULL) ? NULL : (ex = (g_error_free (ex), NULL));
+ device_mode = (g_free (device_mode), NULL);
+ return;
+ }
+ }
+ __finally3:
+ if (inner_error != NULL) {
+ device_mode = (g_free (device_mode), NULL);
+ g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
+ g_clear_error (&inner_error);
+ return;
+ }
+ g_debug ("MCE.vala:161: Got device mode %s", device_mode);
+ context_kit_mce_provider_insert_device_mode_to_map (self, keys, device_mode, ret, unavail);
+ device_mode = (g_free (device_mode), NULL);
+}
+
+
+void _dynamic_get_call_state4 (DBusGProxy* self, char** param1, char** param2, GError** error) {
+ dbus_g_proxy_call (self, "get_call_state", error, G_TYPE_INVALID, G_TYPE_STRING, param1, G_TYPE_STRING, param2, G_TYPE_INVALID);
+ if (*error) {
+ return;
+ }
+}
+
+
+/*
+Fetches call state information from MCE.
+*/
+static void context_kit_mce_provider_get_call_state (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail) {
+ GError * inner_error;
+ char* state;
+ char* type;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ inner_error = NULL;
+ if (context_provider_string_set_is_disjoint (keys, self->priv->call_state_keys)) {
+ return;
+ }
+ state = NULL;
+ type = NULL;
+ {
+ char* _tmp3;
+ char* _tmp2;
+ char* _tmp1;
+ char* _tmp0;
+ _tmp3 = NULL;
+ _tmp2 = NULL;
+ _tmp1 = NULL;
+ _tmp0 = NULL;
+ (_dynamic_get_call_state4 (self->priv->mce_request, &_tmp0, &_tmp2, &inner_error), state = (_tmp1 = _tmp0, state = (g_free (state), NULL), _tmp1));
+ type = (_tmp3 = _tmp2, type = (g_free (type), NULL), _tmp3);
+ if (inner_error != NULL) {
+ goto __catch4_g_error;
+ goto __finally4;
+ }
+ }
+ goto __finally4;
+ __catch4_g_error:
+ {
+ GError * ex;
+ ex = inner_error;
+ inner_error = NULL;
+ {
+ fprintf (stdout, "MCE Provider Error: %s\n", ex->message);
+ context_kit_mce_provider_error_for_subset (self, keys, ret, unavail, self->priv->call_state_keys);
+ (ex == NULL) ? NULL : (ex = (g_error_free (ex), NULL));
+ state = (g_free (state), NULL);
+ type = (g_free (type), NULL);
+ return;
+ }
+ }
+ __finally4:
+ if (inner_error != NULL) {
+ state = (g_free (state), NULL);
+ type = (g_free (type), NULL);
+ g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
+ g_clear_error (&inner_error);
+ return;
+ }
+ g_debug ("MCE.vala:185: Got call state %s %s", state, type);
+ context_kit_mce_provider_insert_call_state_to_map (self, keys, state, type, ret, unavail);
+ state = (g_free (state), NULL);
+ type = (g_free (type), NULL);
+}
+
+
+void _dynamic_get_inactivity_status5 (DBusGProxy* self, gboolean* param1, GError** error) {
+ dbus_g_proxy_call (self, "get_inactivity_status", error, G_TYPE_INVALID, G_TYPE_BOOLEAN, param1, G_TYPE_INVALID);
+ if (*error) {
+ return;
+ }
+}
+
+
+/*
+Fetches inactivity status information from MCE.
+*/
+static void context_kit_mce_provider_get_inactivity_status (ContextKitMCEProvider* self, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail) {
+ GError * inner_error;
+ gboolean status;
+ const char* _tmp0;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ inner_error = NULL;
+ if (context_provider_string_set_is_disjoint (keys, self->priv->inactivity_status_keys)) {
+ return;
+ }
+ status = FALSE;
+ {
+ _dynamic_get_inactivity_status5 (self->priv->mce_request, &status, &inner_error);
+ if (inner_error != NULL) {
+ goto __catch5_g_error;
+ goto __finally5;
+ }
+ }
+ goto __finally5;
+ __catch5_g_error:
+ {
+ GError * ex;
+ ex = inner_error;
+ inner_error = NULL;
+ {
+ fprintf (stdout, "MCE Provider Error: %s\n", ex->message);
+ context_kit_mce_provider_error_for_subset (self, keys, ret, unavail, self->priv->call_state_keys);
+ (ex == NULL) ? NULL : (ex = (g_error_free (ex), NULL));
+ return;
+ }
+ }
+ __finally5:
+ if (inner_error != NULL) {
+ g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
+ g_clear_error (&inner_error);
+ return;
+ }
+ _tmp0 = NULL;
+ if (status) {
+ _tmp0 = "true";
+ } else {
+ _tmp0 = "false";
+ }
+ g_debug ("MCE.vala:208: Got inactivity status %s", _tmp0);
+ context_kit_mce_provider_insert_inactivity_status_to_map (self, keys, status, ret, unavail);
+}
+
+
+static GValue* _g_value_dup (GValue* self) {
+ return g_boxed_copy (G_TYPE_VALUE, self);
+}
+
+
+/*
+Inserts the orientation properties to the map according to the data given. Used by both Get and Subscribe.
+*/
+static void context_kit_mce_provider_insert_orientation_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const ContextKitMCEDeviceOrientation* orientation, GHashTable* ret, GeeArrayList* unavail) {
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ if (context_provider_string_set_is_member (keys, CONTEXT_KIT_MCE_PROVIDER_key_edge_up)) {
+ GValue _tmp0 = {0};
+ GValue v;
+ GValue* _tmp1 = {0};
+ v = (g_value_init (&_tmp0, G_TYPE_INT), _tmp0);
+ g_value_set_int (&v, context_kit_mce_provider_calculate_orientation (self, (*orientation).x, (*orientation).y));
+ g_hash_table_insert (ret, g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_edge_up), (_tmp1 = &v, (_tmp1 == NULL) ? NULL : _g_value_dup (_tmp1)));
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ }
+ if (context_provider_string_set_is_member (keys, CONTEXT_KIT_MCE_PROVIDER_key_facing_up)) {
+ GValue _tmp2 = {0};
+ GValue v;
+ GValue* _tmp3 = {0};
+ v = (g_value_init (&_tmp2, G_TYPE_INT), _tmp2);
+ if (_vala_strcmp0 ((*orientation).facing, "face_up") == 0) {
+ g_value_set_int (&v, 1);
+ } else {
+ if (_vala_strcmp0 ((*orientation).facing, "face_down") == 0) {
+ g_value_set_int (&v, 2);
+ } else {
+ g_value_set_int (&v, 0);
+ }
+ }
+ g_hash_table_insert (ret, g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_facing_up), (_tmp3 = &v, (_tmp3 == NULL) ? NULL : _g_value_dup (_tmp3)));
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ }
+}
+
+
+/*
+Inserts the display state properties to the map according to the data given. Used by both Get and Subscribe.
+*/
+static void context_kit_mce_provider_insert_display_status_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const char* display_status, GHashTable* ret, GeeArrayList* unavail) {
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (display_status != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ if (context_provider_string_set_is_member (keys, CONTEXT_KIT_MCE_PROVIDER_key_display_state)) {
+ GValue _tmp0 = {0};
+ GValue v;
+ GValue* _tmp1 = {0};
+ v = (g_value_init (&_tmp0, G_TYPE_INT), _tmp0);
+ if (_vala_strcmp0 (display_status, "off") == 0) {
+ g_value_set_int (&v, 0);
+ } else {
+ if (_vala_strcmp0 (display_status, "on") == 0) {
+ g_value_set_int (&v, 1);
+ } else {
+ if (_vala_strcmp0 (display_status, "dimmed") == 0) {
+ g_value_set_int (&v, 2);
+ } else {
+ fprintf (stdout, "MCE plugin: Unknown display status %s\n", display_status);
+ gee_collection_add ((GeeCollection*) unavail, CONTEXT_KIT_MCE_PROVIDER_key_display_state);
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ return;
+ }
+ }
+ }
+ g_hash_table_insert (ret, g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_display_state), (_tmp1 = &v, (_tmp1 == NULL) ? NULL : _g_value_dup (_tmp1)));
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ }
+}
+
+
+/*
+Inserts the device mode properties to the map according to the data given. Used by both Get and Subscribe.
+*/
+static void context_kit_mce_provider_insert_device_mode_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const char* device_mode, GHashTable* ret, GeeArrayList* unavail) {
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (device_mode != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ if (context_provider_string_set_is_member (keys, CONTEXT_KIT_MCE_PROVIDER_key_is_flight_mode)) {
+ GValue _tmp0 = {0};
+ GValue v;
+ GValue* _tmp1 = {0};
+ v = (g_value_init (&_tmp0, G_TYPE_BOOLEAN), _tmp0);
+ if (_vala_strcmp0 (device_mode, "normal") == 0) {
+ g_value_set_boolean (&v, FALSE);
+ } else {
+ if (_vala_strcmp0 (device_mode, "flight") == 0) {
+ g_value_set_boolean (&v, TRUE);
+ } else {
+ fprintf (stdout, "MCE plugin: Unknown device mode %s\n", device_mode);
+ gee_collection_add ((GeeCollection*) unavail, CONTEXT_KIT_MCE_PROVIDER_key_is_flight_mode);
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ return;
+ }
+ }
+ g_hash_table_insert (ret, g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_is_flight_mode), (_tmp1 = &v, (_tmp1 == NULL) ? NULL : _g_value_dup (_tmp1)));
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ }
+}
+
+
+/*
+Inserts the call state properties to the map according to the data given. Used by both Get and Subscribe.
+*/
+static void context_kit_mce_provider_insert_call_state_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, const char* state, const char* type, GHashTable* ret, GeeArrayList* unavail) {
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (state != NULL);
+ g_return_if_fail (type != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ if (context_provider_string_set_is_member (keys, CONTEXT_KIT_MCE_PROVIDER_key_is_emergency_mode)) {
+ GValue _tmp0 = {0};
+ GValue v;
+ GValue* _tmp3 = {0};
+ v = (g_value_init (&_tmp0, G_TYPE_BOOLEAN), _tmp0);
+ if (_vala_strcmp0 (state, "none") == 0) {
+ g_value_set_boolean (&v, FALSE);
+ } else {
+ gboolean _tmp1;
+ gboolean _tmp2;
+ _tmp1 = FALSE;
+ _tmp2 = FALSE;
+ if (_vala_strcmp0 (state, "cellular") == 0) {
+ _tmp2 = TRUE;
+ } else {
+ _tmp2 = _vala_strcmp0 (state, "voip") == 0;
+ }
+ if (_tmp2) {
+ _tmp1 = TRUE;
+ } else {
+ _tmp1 = _vala_strcmp0 (state, "video") == 0;
+ }
+ if (_tmp1) {
+ if (_vala_strcmp0 (type, "normal") == 0) {
+ g_value_set_boolean (&v, FALSE);
+ } else {
+ if (_vala_strcmp0 (type, "emergency") == 0) {
+ g_value_set_boolean (&v, TRUE);
+ } else {
+ fprintf (stdout, "MCE plugin: Unknown call type %s\n", type);
+ gee_collection_add ((GeeCollection*) unavail, CONTEXT_KIT_MCE_PROVIDER_key_is_emergency_mode);
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ return;
+ }
+ }
+ } else {
+ fprintf (stdout, "MCE plugin: Unknown call state %s\n", state);
+ gee_collection_add ((GeeCollection*) unavail, CONTEXT_KIT_MCE_PROVIDER_key_is_emergency_mode);
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ return;
+ }
+ }
+ g_hash_table_insert (ret, g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_is_emergency_mode), (_tmp3 = &v, (_tmp3 == NULL) ? NULL : _g_value_dup (_tmp3)));
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ }
+}
+
+
+/*
+Inserts the inactivity status properties to the map according to the data given. Used by both Get and Subscribe.
+*/
+static void context_kit_mce_provider_insert_inactivity_status_to_map (ContextKitMCEProvider* self, ContextProviderStringSet* keys, gboolean status, GHashTable* ret, GeeArrayList* unavail) {
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ if (context_provider_string_set_is_member (keys, CONTEXT_KIT_MCE_PROVIDER_key_in_active_use)) {
+ GValue _tmp0 = {0};
+ GValue v;
+ GValue* _tmp1 = {0};
+ v = (g_value_init (&_tmp0, G_TYPE_BOOLEAN), _tmp0);
+ g_value_set_boolean (&v, !status);
+ /* Note the negation*/
+ g_hash_table_insert (ret, g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_in_active_use), (_tmp1 = &v, (_tmp1 == NULL) ? NULL : _g_value_dup (_tmp1)));
+ G_IS_VALUE (&v) ? (g_value_unset (&v), NULL) : NULL;
+ }
+}
+
+
+/*
+Is called when a sig_device_orientation_ind signal is received from MCE.
+*/
+static void context_kit_mce_provider_orientation_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* rotation, const char* stand, const char* facing, gint32 x, gint32 y, gint32 z) {
+ const char* _tmp2;
+ const char* _tmp1;
+ const char* _tmp0;
+ ContextKitMCEDeviceOrientation _tmp3 = {0};
+ ContextKitMCEDeviceOrientation orientation;
+ GHashTable* ret;
+ GeeArrayList* unavail;
+ ContextProviderManager* _tmp4;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (sender != NULL);
+ g_return_if_fail (rotation != NULL);
+ g_return_if_fail (stand != NULL);
+ g_return_if_fail (facing != NULL);
+ g_debug ("MCE.vala:337: orientation_changed: %s, %s, %s", rotation, stand, facing);
+ _tmp2 = NULL;
+ _tmp1 = NULL;
+ _tmp0 = NULL;
+ orientation = (memset (&_tmp3, 0, sizeof (ContextKitMCEDeviceOrientation)), _tmp3.rotation = (_tmp0 = rotation, (_tmp0 == NULL) ? NULL : g_strdup (_tmp0)), _tmp3.stand = (_tmp1 = stand, (_tmp1 == NULL) ? NULL : g_strdup (_tmp1)), _tmp3.facing = (_tmp2 = facing, (_tmp2 == NULL) ? NULL : g_strdup (_tmp2)), _tmp3.x = (gint) x, _tmp3.y = (gint) y, _tmp3.z = (gint) z, _tmp3);
+ ret = g_hash_table_new (g_str_hash, g_str_equal);
+ unavail = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, g_direct_equal);
+ context_kit_mce_provider_insert_orientation_to_map (self, self->priv->orientation_keys, &orientation, ret, unavail);
+ /* Update the central value table with the new property values*/
+ _tmp4 = NULL;
+ context_provider_manager_property_values_changed (_tmp4 = context_provider_manager_get_instance (), ret, unavail);
+ (_tmp4 == NULL) ? NULL : (_tmp4 = (g_object_unref (_tmp4), NULL));
+ context_kit_mce_device_orientation_destroy (&orientation);
+ (ret == NULL) ? NULL : (ret = (g_hash_table_unref (ret), NULL));
+ (unavail == NULL) ? NULL : (unavail = (g_object_unref (unavail), NULL));
+}
+
+
+/* FIXME: Is this how it should be done?
+
+Is called when a display_status_ind signal is received from MCE.
+*/
+static void context_kit_mce_provider_display_status_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* display_status) {
+ GHashTable* ret;
+ GeeArrayList* unavail;
+ ContextProviderManager* _tmp0;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (sender != NULL);
+ g_return_if_fail (display_status != NULL);
+ g_debug ("MCE.vala:354: MCE plugin: Display status changed: %s", display_status);
+ ret = g_hash_table_new (g_str_hash, g_str_equal);
+ unavail = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, g_direct_equal);
+ context_kit_mce_provider_insert_display_status_to_map (self, self->priv->display_status_keys, display_status, ret, unavail);
+ /* Update the central value table with the new property values*/
+ _tmp0 = NULL;
+ context_provider_manager_property_values_changed (_tmp0 = context_provider_manager_get_instance (), ret, unavail);
+ (_tmp0 == NULL) ? NULL : (_tmp0 = (g_object_unref (_tmp0), NULL));
+ (ret == NULL) ? NULL : (ret = (g_hash_table_unref (ret), NULL));
+ (unavail == NULL) ? NULL : (unavail = (g_object_unref (unavail), NULL));
+}
+
+
+/*
+Is called when a sig_device_mode_ind signal is received from MCE.
+*/
+static void context_kit_mce_provider_device_mode_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* device_mode) {
+ GHashTable* ret;
+ GeeArrayList* unavail;
+ ContextProviderManager* _tmp0;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (sender != NULL);
+ g_return_if_fail (device_mode != NULL);
+ g_debug ("MCE.vala:369: MCE plugin: Device mode changed: %s", device_mode);
+ ret = g_hash_table_new (g_str_hash, g_str_equal);
+ unavail = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, g_direct_equal);
+ context_kit_mce_provider_insert_device_mode_to_map (self, self->priv->device_mode_keys, device_mode, ret, unavail);
+ /* Update the central value table with the new property values*/
+ _tmp0 = NULL;
+ context_provider_manager_property_values_changed (_tmp0 = context_provider_manager_get_instance (), ret, unavail);
+ (_tmp0 == NULL) ? NULL : (_tmp0 = (g_object_unref (_tmp0), NULL));
+ (ret == NULL) ? NULL : (ret = (g_hash_table_unref (ret), NULL));
+ (unavail == NULL) ? NULL : (unavail = (g_object_unref (unavail), NULL));
+}
+
+
+/*
+Is called when a sig_call_state_ind signal is received from MCE.
+*/
+static void context_kit_mce_provider_call_state_changed (ContextKitMCEProvider* self, DBusGProxy* sender, const char* state, const char* type) {
+ GHashTable* ret;
+ GeeArrayList* unavail;
+ ContextProviderManager* _tmp0;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (sender != NULL);
+ g_return_if_fail (state != NULL);
+ g_return_if_fail (type != NULL);
+ g_debug ("MCE.vala:384: MCE plugin: Call state changed: %s %s", state, type);
+ ret = g_hash_table_new (g_str_hash, g_str_equal);
+ unavail = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, g_direct_equal);
+ context_kit_mce_provider_insert_call_state_to_map (self, self->priv->call_state_keys, state, type, ret, unavail);
+ /* Update the central value table with the new property values*/
+ _tmp0 = NULL;
+ context_provider_manager_property_values_changed (_tmp0 = context_provider_manager_get_instance (), ret, unavail);
+ (_tmp0 == NULL) ? NULL : (_tmp0 = (g_object_unref (_tmp0), NULL));
+ (ret == NULL) ? NULL : (ret = (g_hash_table_unref (ret), NULL));
+ (unavail == NULL) ? NULL : (unavail = (g_object_unref (unavail), NULL));
+}
+
+
+/*
+Is called when a system_call_state_ind signal is received from MCE.
+*/
+static void context_kit_mce_provider_inactivity_status_changed (ContextKitMCEProvider* self, DBusGProxy* sender, gboolean status) {
+ const char* _tmp0;
+ GHashTable* ret;
+ GeeArrayList* unavail;
+ ContextProviderManager* _tmp1;
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (sender != NULL);
+ _tmp0 = NULL;
+ if (status) {
+ _tmp0 = "true";
+ } else {
+ _tmp0 = "false";
+ }
+ g_debug ("MCE.vala:399: MCE plugin: Inactivity state changed: %s", _tmp0);
+ ret = g_hash_table_new (g_str_hash, g_str_equal);
+ unavail = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, g_direct_equal);
+ context_kit_mce_provider_insert_inactivity_status_to_map (self, self->priv->inactivity_status_keys, status, ret, unavail);
+ /* Update the central value table with the new property values*/
+ _tmp1 = NULL;
+ context_provider_manager_property_values_changed (_tmp1 = context_provider_manager_get_instance (), ret, unavail);
+ (_tmp1 == NULL) ? NULL : (_tmp1 = (g_object_unref (_tmp1), NULL));
+ (ret == NULL) ? NULL : (ret = (g_hash_table_unref (ret), NULL));
+ (unavail == NULL) ? NULL : (unavail = (g_object_unref (unavail), NULL));
+}
+
+
+ContextKitMCEProvider* context_kit_mce_provider_construct (GType object_type) {
+ GError * inner_error;
+ ContextKitMCEProvider * self;
+ DBusGConnection* _tmp0;
+ DBusGConnection* _tmp1;
+ DBusGProxy* _tmp2;
+ ContextProviderStringSet* _tmp5;
+ gint _tmp4_length1;
+ char** _tmp4;
+ char** _tmp3;
+ ContextProviderStringSet* _tmp8;
+ gint _tmp7_length1;
+ char** _tmp7;
+ char** _tmp6;
+ ContextProviderStringSet* _tmp11;
+ gint _tmp10_length1;
+ char** _tmp10;
+ char** _tmp9;
+ ContextProviderStringSet* _tmp14;
+ gint _tmp13_length1;
+ char** _tmp13;
+ char** _tmp12;
+ ContextProviderStringSet* _tmp17;
+ gint _tmp16_length1;
+ char** _tmp16;
+ char** _tmp15;
+ inner_error = NULL;
+ self = g_object_newv (object_type, 0, NULL);
+ _tmp0 = dbus_g_bus_get (DBUS_BUS_SYSTEM, &inner_error);
+ if (inner_error != NULL) {
+ g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
+ g_clear_error (&inner_error);
+ return;
+ }
+ _tmp1 = NULL;
+ self->priv->conn = (_tmp1 = _tmp0, (self->priv->conn == NULL) ? NULL : (self->priv->conn = (dbus_g_connection_unref (self->priv->conn), NULL)), _tmp1);
+ _tmp2 = NULL;
+ self->priv->mce_request = (_tmp2 = dbus_g_proxy_new_for_name (self->priv->conn, "com.nokia.mce", "/com/nokia/mce/request", "com.nokia.mce.request"), (self->priv->mce_request == NULL) ? NULL : (self->priv->mce_request = (g_object_unref (self->priv->mce_request), NULL)), _tmp2);
+ _tmp5 = NULL;
+ _tmp4 = NULL;
+ _tmp3 = NULL;
+ self->priv->orientation_keys = (_tmp5 = context_provider_string_set_new_from_array ((_tmp4 = (_tmp3 = g_new0 (char*, 2 + 1), _tmp3[0] = g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_edge_up), _tmp3[1] = g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_facing_up), _tmp3), _tmp4_length1 = 2, _tmp4)), (self->priv->orientation_keys == NULL) ? NULL : (self->priv->orientation_keys = (context_provider_string_set_unref (self->priv->orientation_keys), NULL)), _tmp5);
+ _tmp4 = (_vala_array_free (_tmp4, _tmp4_length1, (GDestroyNotify) g_free), NULL);
+ _tmp8 = NULL;
+ _tmp7 = NULL;
+ _tmp6 = NULL;
+ self->priv->display_status_keys = (_tmp8 = context_provider_string_set_new_from_array ((_tmp7 = (_tmp6 = g_new0 (char*, 1 + 1), _tmp6[0] = g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_display_state), _tmp6), _tmp7_length1 = 1, _tmp7)), (self->priv->display_status_keys == NULL) ? NULL : (self->priv->display_status_keys = (context_provider_string_set_unref (self->priv->display_status_keys), NULL)), _tmp8);
+ _tmp7 = (_vala_array_free (_tmp7, _tmp7_length1, (GDestroyNotify) g_free), NULL);
+ _tmp11 = NULL;
+ _tmp10 = NULL;
+ _tmp9 = NULL;
+ self->priv->device_mode_keys = (_tmp11 = context_provider_string_set_new_from_array ((_tmp10 = (_tmp9 = g_new0 (char*, 1 + 1), _tmp9[0] = g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_is_flight_mode), _tmp9), _tmp10_length1 = 1, _tmp10)), (self->priv->device_mode_keys == NULL) ? NULL : (self->priv->device_mode_keys = (context_provider_string_set_unref (self->priv->device_mode_keys), NULL)), _tmp11);
+ _tmp10 = (_vala_array_free (_tmp10, _tmp10_length1, (GDestroyNotify) g_free), NULL);
+ _tmp14 = NULL;
+ _tmp13 = NULL;
+ _tmp12 = NULL;
+ self->priv->call_state_keys = (_tmp14 = context_provider_string_set_new_from_array ((_tmp13 = (_tmp12 = g_new0 (char*, 1 + 1), _tmp12[0] = g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_is_emergency_mode), _tmp12), _tmp13_length1 = 1, _tmp13)), (self->priv->call_state_keys == NULL) ? NULL : (self->priv->call_state_keys = (context_provider_string_set_unref (self->priv->call_state_keys), NULL)), _tmp14);
+ _tmp13 = (_vala_array_free (_tmp13, _tmp13_length1, (GDestroyNotify) g_free), NULL);
+ _tmp17 = NULL;
+ _tmp16 = NULL;
+ _tmp15 = NULL;
+ self->priv->inactivity_status_keys = (_tmp17 = context_provider_string_set_new_from_array ((_tmp16 = (_tmp15 = g_new0 (char*, 1 + 1), _tmp15[0] = g_strdup (CONTEXT_KIT_MCE_PROVIDER_key_in_active_use), _tmp15), _tmp16_length1 = 1, _tmp16)), (self->priv->inactivity_status_keys == NULL) ? NULL : (self->priv->inactivity_status_keys = (context_provider_string_set_unref (self->priv->inactivity_status_keys), NULL)), _tmp17);
+ _tmp16 = (_vala_array_free (_tmp16, _tmp16_length1, (GDestroyNotify) g_free), NULL);
+ return self;
+}
+
+
+ContextKitMCEProvider* context_kit_mce_provider_new (void) {
+ return context_kit_mce_provider_construct (CONTEXT_KIT_MCE_TYPE_PROVIDER);
+}
+
+
+static void context_kit_mce_provider_real_get (ContextProviderProvider* base, ContextProviderStringSet* keys, GHashTable* ret, GeeArrayList* unavail) {
+ ContextKitMCEProvider * self;
+ self = (ContextKitMCEProvider*) base;
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (ret != NULL);
+ g_return_if_fail (unavail != NULL);
+ context_kit_mce_provider_get_orientation (self, keys, ret, unavail);
+ context_kit_mce_provider_get_display_status (self, keys, ret, unavail);
+ context_kit_mce_provider_get_device_mode (self, keys, ret, unavail);
+ context_kit_mce_provider_get_call_state (self, keys, ret, unavail);
+ context_kit_mce_provider_get_inactivity_status (self, keys, ret, unavail);
+}
+
+
+static void context_kit_mce_provider_ensure_mce_signal_exists (ContextKitMCEProvider* self) {
+ g_return_if_fail (self != NULL);
+ if (self->priv->mce_signal == NULL) {
+ DBusGProxy* _tmp0;
+ _tmp0 = NULL;
+ self->priv->mce_signal = (_tmp0 = dbus_g_proxy_new_for_name (self->priv->conn, "com.nokia.mce", "/com/nokia/mce/signal", "com.nokia.mce.signal"), (self->priv->mce_signal == NULL) ? NULL : (self->priv->mce_signal = (g_object_unref (self->priv->mce_signal), NULL)), _tmp0);
+ }
+}
+
+
+static void _context_kit_mce_provider_orientation_changed_dynamic_sig_device_orientation_ind0_ (DBusGProxy* _sender, const char* rotation, const char* stand, const char* facing, gint32 x, gint32 y, gint32 z, gpointer self) {
+ context_kit_mce_provider_orientation_changed (self, _sender, rotation, stand, facing, x, y, z);
+}
+
+
+void _dynamic_sig_device_orientation_ind1_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_object_register_marshaller (g_cclosure_user_marshal_VOID__STRING_STRING_STRING_INT_INT_INT, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INVALID);
+ dbus_g_proxy_add_signal (obj, "sig_device_orientation_ind", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (obj, signal_name, handler, data, NULL);
+}
+
+
+static void _context_kit_mce_provider_display_status_changed_dynamic_display_status_ind2_ (DBusGProxy* _sender, const char* display_status, gpointer self) {
+ context_kit_mce_provider_display_status_changed (self, _sender, display_status);
+}
+
+
+void _dynamic_display_status_ind3_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_add_signal (obj, "display_status_ind", G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (obj, signal_name, handler, data, NULL);
+}
+
+
+static void _context_kit_mce_provider_device_mode_changed_dynamic_sig_device_mode_ind4_ (DBusGProxy* _sender, const char* device_mode, gpointer self) {
+ context_kit_mce_provider_device_mode_changed (self, _sender, device_mode);
+}
+
+
+void _dynamic_sig_device_mode_ind5_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_add_signal (obj, "sig_device_mode_ind", G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (obj, signal_name, handler, data, NULL);
+}
+
+
+static void _context_kit_mce_provider_call_state_changed_dynamic_sig_call_state_ind6_ (DBusGProxy* _sender, const char* state, const char* type, gpointer self) {
+ context_kit_mce_provider_call_state_changed (self, _sender, state, type);
+}
+
+
+void _dynamic_sig_call_state_ind7_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_object_register_marshaller (g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_add_signal (obj, "sig_call_state_ind", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (obj, signal_name, handler, data, NULL);
+}
+
+
+static void _context_kit_mce_provider_inactivity_status_changed_dynamic_system_inactivity_ind8_ (DBusGProxy* _sender, gboolean status, gpointer self) {
+ context_kit_mce_provider_inactivity_status_changed (self, _sender, status);
+}
+
+
+void _dynamic_system_inactivity_ind9_connect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, G_TYPE_BOOLEAN, G_TYPE_INVALID);
+ dbus_g_proxy_add_signal (obj, "system_inactivity_ind", G_TYPE_BOOLEAN, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (obj, signal_name, handler, data, NULL);
+}
+
+
+static void context_kit_mce_provider_real_keys_subscribed (ContextProviderProvider* base, ContextProviderStringSet* keys) {
+ ContextKitMCEProvider * self;
+ char* _tmp0;
+ self = (ContextKitMCEProvider*) base;
+ g_return_if_fail (keys != NULL);
+ _tmp0 = NULL;
+ g_debug ("MCE.vala:454: MCE plugin: keys_subscribed %s", _tmp0 = context_provider_string_set_debug (keys));
+ _tmp0 = (g_free (_tmp0), NULL);
+ context_kit_mce_provider_ensure_mce_signal_exists (self);
+ /* Connect the corresponding MCE signal to its handler*/
+ if (context_provider_string_set_is_disjoint (keys, self->priv->orientation_keys) == FALSE) {
+ /* Note: even thoug orientation_keys has to members,
+ this is OK since connecting the same signal twice does not do any harm*/
+ _dynamic_sig_device_orientation_ind1_connect (self->priv->mce_signal, "sig_device_orientation_ind", (GCallback) _context_kit_mce_provider_orientation_changed_dynamic_sig_device_orientation_ind0_, self);
+ }
+ if (context_provider_string_set_is_disjoint (keys, self->priv->display_status_keys) == FALSE) {
+ _dynamic_display_status_ind3_connect (self->priv->mce_signal, "display_status_ind", (GCallback) _context_kit_mce_provider_display_status_changed_dynamic_display_status_ind2_, self);
+ }
+ if (context_provider_string_set_is_disjoint (keys, self->priv->device_mode_keys) == FALSE) {
+ _dynamic_sig_device_mode_ind5_connect (self->priv->mce_signal, "sig_device_mode_ind", (GCallback) _context_kit_mce_provider_device_mode_changed_dynamic_sig_device_mode_ind4_, self);
+ }
+ if (context_provider_string_set_is_disjoint (keys, self->priv->call_state_keys) == FALSE) {
+ _dynamic_sig_call_state_ind7_connect (self->priv->mce_signal, "sig_call_state_ind", (GCallback) _context_kit_mce_provider_call_state_changed_dynamic_sig_call_state_ind6_, self);
+ }
+ if (context_provider_string_set_is_disjoint (keys, self->priv->inactivity_status_keys) == FALSE) {
+ _dynamic_system_inactivity_ind9_connect (self->priv->mce_signal, "system_inactivity_ind", (GCallback) _context_kit_mce_provider_inactivity_status_changed_dynamic_system_inactivity_ind8_, self);
+ }
+}
+
+
+static void _context_kit_mce_provider_orientation_changed_dynamic_sig_device_orientation_ind10_ (DBusGProxy* _sender, const char* rotation, const char* stand, const char* facing, gint32 x, gint32 y, gint32 z, gpointer self) {
+ context_kit_mce_provider_orientation_changed (self, _sender, rotation, stand, facing, x, y, z);
+}
+
+
+void _dynamic_sig_device_orientation_ind11_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_proxy_disconnect_signal (obj, signal_name, handler, data);
+}
+
+
+static void _context_kit_mce_provider_display_status_changed_dynamic_display_status_ind12_ (DBusGProxy* _sender, const char* display_status, gpointer self) {
+ context_kit_mce_provider_display_status_changed (self, _sender, display_status);
+}
+
+
+void _dynamic_display_status_ind13_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_proxy_disconnect_signal (obj, signal_name, handler, data);
+}
+
+
+static void _context_kit_mce_provider_device_mode_changed_dynamic_sig_device_mode_ind14_ (DBusGProxy* _sender, const char* device_mode, gpointer self) {
+ context_kit_mce_provider_device_mode_changed (self, _sender, device_mode);
+}
+
+
+void _dynamic_sig_device_mode_ind15_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_proxy_disconnect_signal (obj, signal_name, handler, data);
+}
+
+
+static void _context_kit_mce_provider_call_state_changed_dynamic_sig_call_state_ind16_ (DBusGProxy* _sender, const char* state, const char* type, gpointer self) {
+ context_kit_mce_provider_call_state_changed (self, _sender, state, type);
+}
+
+
+void _dynamic_sig_call_state_ind17_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_proxy_disconnect_signal (obj, signal_name, handler, data);
+}
+
+
+static void _context_kit_mce_provider_inactivity_status_changed_dynamic_system_inactivity_ind18_ (DBusGProxy* _sender, gboolean status, gpointer self) {
+ context_kit_mce_provider_inactivity_status_changed (self, _sender, status);
+}
+
+
+void _dynamic_system_inactivity_ind19_disconnect (gpointer obj, const char * signal_name, GCallback handler, gpointer data) {
+ dbus_g_proxy_disconnect_signal (obj, signal_name, handler, data);
+}
+
+
+static void context_kit_mce_provider_real_keys_unsubscribed (ContextProviderProvider* base, ContextProviderStringSet* keys, ContextProviderStringSet* keys_remaining) {
+ ContextKitMCEProvider * self;
+ char* _tmp0;
+ self = (ContextKitMCEProvider*) base;
+ g_return_if_fail (keys != NULL);
+ g_return_if_fail (keys_remaining != NULL);
+ _tmp0 = NULL;
+ g_debug ("MCE.vala:483: MCE plugin: keys_unsubscribed %s", _tmp0 = context_provider_string_set_debug (keys));
+ _tmp0 = (g_free (_tmp0), NULL);
+ /* Disconnect the corresponding MCE signal from its handler*/
+ if (context_provider_string_set_is_disjoint (keys, self->priv->orientation_keys) == FALSE) {
+ gint no_of_subscribers;
+ /* Note: orientation_keys contains two keys
+ At least one of the keys was unsubscribed, but the other one may still be subscribed to
+ FIXME: How to implement?*/
+ no_of_subscribers = 0;
+ {
+ ContextProviderStringSetIter* _key_it;
+ _key_it = context_provider_string_set_iterator (self->priv->orientation_keys);
+ while (context_provider_string_set_iter_next (_key_it)) {
+ char* key;
+ ContextProviderManager* _tmp1;
+ key = context_provider_string_set_iter_get (_key_it);
+ _tmp1 = NULL;
+ no_of_subscribers = no_of_subscribers + context_provider_key_usage_counter_number_of_subscribers (context_provider_manager_get_key_counter (_tmp1 = context_provider_manager_get_instance ()), key);
+ (_tmp1 == NULL) ? NULL : (_tmp1 = (g_object_unref (_tmp1), NULL));
+ key = (g_free (key), NULL);
+ }
+ (_key_it == NULL) ? NULL : (_key_it = (context_provider_string_set_iter_unref (_key_it), NULL));
+ }
+ if (no_of_subscribers == 0) {
+ _dynamic_sig_device_orientation_ind11_disconnect (self->priv->mce_signal, "sig_device_orientation_ind", (GCallback) _context_kit_mce_provider_orientation_changed_dynamic_sig_device_orientation_ind10_, self);
+ }
+ }
+ /* The other key sets contain only one key, so unsubscription is straightforward*/
+ if (context_provider_string_set_is_disjoint (keys, self->priv->display_status_keys) == FALSE) {
+ _dynamic_display_status_ind13_disconnect (self->priv->mce_signal, "display_status_ind", (GCallback) _context_kit_mce_provider_display_status_changed_dynamic_display_status_ind12_, self);
+ }
+ if (context_provider_string_set_is_disjoint (keys, self->priv->device_mode_keys) == FALSE) {
+ _dynamic_sig_device_mode_ind15_disconnect (self->priv->mce_signal, "sig_device_mode_ind", (GCallback) _context_kit_mce_provider_device_mode_changed_dynamic_sig_device_mode_ind14_, self);
+ }
+ if (context_provider_string_set_is_disjoint (keys, self->priv->call_state_keys) == FALSE) {
+ _dynamic_sig_call_state_ind17_disconnect (self->priv->mce_signal, "sig_call_state_ind", (GCallback) _context_kit_mce_provider_call_state_changed_dynamic_sig_call_state_ind16_, self);
+ }
+ if (context_provider_string_set_is_disjoint (keys, self->priv->inactivity_status_keys) == FALSE) {
+ _dynamic_system_inactivity_ind19_disconnect (self->priv->mce_signal, "system_inactivity_ind", (GCallback) _context_kit_mce_provider_inactivity_status_changed_dynamic_system_inactivity_ind18_, self);
+ }
+}
+
+
+static ContextProviderStringSet* context_kit_mce_provider_real_provided_keys (ContextProviderProvider* base) {
+ ContextKitMCEProvider * self;
+ ContextProviderStringSet* _tmp0;
+ self = (ContextKitMCEProvider*) base;
+ _tmp0 = NULL;
+ return (_tmp0 = self->priv->all_keys, (_tmp0 == NULL) ? NULL : context_provider_string_set_ref (_tmp0));
+}
+
+
+static void context_kit_mce_provider_class_init (ContextKitMCEProviderClass * klass) {
+ context_kit_mce_provider_parent_class = g_type_class_peek_parent (klass);
+ g_type_class_add_private (klass, sizeof (ContextKitMCEProviderPrivate));
+ G_OBJECT_CLASS (klass)->finalize = context_kit_mce_provider_finalize;
+}
+
+
+static void context_kit_mce_provider_context_provider_provider_interface_init (ContextProviderProviderIface * iface) {
+ context_kit_mce_provider_context_provider_provider_parent_iface = g_type_interface_peek_parent (iface);
+ iface->get = context_kit_mce_provider_real_get;
+ iface->keys_subscribed = context_kit_mce_provider_real_keys_subscribed;
+ iface->keys_unsubscribed = context_kit_mce_provider_real_keys_unsubscribed;
+ iface->provided_keys = context_kit_mce_provider_real_provided_keys;
+}
+
+
+static void context_kit_mce_provider_instance_init (ContextKitMCEProvider * self) {
+ self->priv = CONTEXT_KIT_MCE_PROVIDER_GET_PRIVATE (self);
+ self->priv->all_keys = context_provider_string_set_new_from_array (CONTEXT_KIT_MCE_PROVIDER_keys);
+}
+
+
+static void context_kit_mce_provider_finalize (GObject* obj) {
+ ContextKitMCEProvider * self;
+ self = CONTEXT_KIT_MCE_PROVIDER (obj);
+ (self->priv->conn == NULL) ? NULL : (self->priv->conn = (dbus_g_connection_unref (self->priv->conn), NULL));
+ (self->priv->mce_request == NULL) ? NULL : (self->priv->mce_request = (g_object_unref (self->priv->mce_request), NULL));
+ (self->priv->mce_signal == NULL) ? NULL : (self->priv->mce_signal = (g_object_unref (self->priv->mce_signal), NULL));
+ (self->priv->all_keys == NULL) ? NULL : (self->priv->all_keys = (context_provider_string_set_unref (self->priv->all_keys), NULL));
+ (self->priv->orientation_keys == NULL) ? NULL : (self->priv->orientation_keys = (context_provider_string_set_unref (self->priv->orientation_keys), NULL));
+ (self->priv->display_status_keys == NULL) ? NULL : (self->priv->display_status_keys = (context_provider_string_set_unref (self->priv->display_status_keys), NULL));
+ (self->priv->device_mode_keys == NULL) ? NULL : (self->priv->device_mode_keys = (context_provider_string_set_unref (self->priv->device_mode_keys), NULL));
+ (self->priv->call_state_keys == NULL) ? NULL : (self->priv->call_state_keys = (context_provider_string_set_unref (self->priv->call_state_keys), NULL));
+ (self->priv->inactivity_status_keys == NULL) ? NULL : (self->priv->inactivity_status_keys = (context_provider_string_set_unref (self->priv->inactivity_status_keys), NULL));
+ G_OBJECT_CLASS (context_kit_mce_provider_parent_class)->finalize (obj);
+}
+
+
+GType context_kit_mce_provider_get_type (void) {
+ static GType context_kit_mce_provider_type_id = 0;
+ if (context_kit_mce_provider_type_id == 0) {
+ static const GTypeInfo g_define_type_info = { sizeof (ContextKitMCEProviderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) context_kit_mce_provider_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ContextKitMCEProvider), 0, (GInstanceInitFunc) context_kit_mce_provider_instance_init, NULL };
+ static const GInterfaceInfo context_provider_provider_info = { (GInterfaceInitFunc) context_kit_mce_provider_context_provider_provider_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+ context_kit_mce_provider_type_id = g_type_register_static (G_TYPE_OBJECT, "ContextKitMCEProvider", &g_define_type_info, 0);
+ g_type_add_interface_static (context_kit_mce_provider_type_id, CONTEXT_PROVIDER_TYPE_PROVIDER, &context_provider_provider_info);
+ }
+ return context_kit_mce_provider_type_id;
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ if ((array != NULL) && (destroy_func != NULL)) {
+ int i;
+ for (i = 0; i < array_length; i = i + 1) {
+ if (((gpointer*) array)[i] != NULL) {
+ destroy_func (((gpointer*) array)[i]);
+ }
+ }
+ }
+ g_free (array);
+}
+
+
+static int _vala_strcmp0 (const char * str1, const char * str2) {
+ if (str1 == NULL) {
+ return -(str1 != str2);
+ }
+ if (str2 == NULL) {
+ return str1 != str2;
+ }
+ return strcmp (str1, str2);
+}
+
+
+
+static void g_cclosure_user_marshal_VOID__STRING_STRING_STRING_INT_INT_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+ typedef void (*GMarshalFunc_VOID__STRING_STRING_STRING_INT_INT_INT) (gpointer data1, const char* arg_1, const char* arg_2, const char* arg_3, gint32 arg_4, gint32 arg_5, gint32 arg_6, gpointer data2);
+ register GMarshalFunc_VOID__STRING_STRING_STRING_INT_INT_INT callback;
+ register GCClosure * cc;
+ register gpointer data1, data2;
+ cc = (GCClosure *) closure;
+ g_return_if_fail (n_param_values == 7);
+ if (G_CCLOSURE_SWAP_DATA (closure)) {
+ data1 = closure->data;
+ data2 = param_values->data[0].v_pointer;
+ } else {
+ data1 = param_values->data[0].v_pointer;
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__STRING_STRING_STRING_INT_INT_INT) (marshal_data ? marshal_data : cc->callback);
+ callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), g_value_get_string (param_values + 3), g_value_get_int (param_values + 4), g_value_get_int (param_values + 5), g_value_get_int (param_values + 6), data2);
+}
+
+
+static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+ typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2);
+ register GMarshalFunc_VOID__STRING_STRING callback;
+ register GCClosure * cc;
+ register gpointer data1, data2;
+ cc = (GCClosure *) closure;
+ g_return_if_fail (n_param_values == 3);
+ if (G_CCLOSURE_SWAP_DATA (closure)) {
+ data1 = closure->data;
+ data2 = param_values->data[0].v_pointer;
+ } else {
+ data1 = param_values->data[0].v_pointer;
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+ callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2);
+}
+
+
+