X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=login-helper%2Flogin-helper.c;h=20fa9b005ddaf100736b3971074699620afaab60;hb=b86f97047caa9b20f4838186f34c8fa90094e90c;hp=9d5668c306f6cdd66ff69e20ade31a29cf581cfd;hpb=bdb42ca6676e46b369bc337df46ad3958a62dee9;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/login-helper/login-helper.c b/login-helper/login-helper.c index 9d5668c..20fa9b0 100644 --- a/login-helper/login-helper.c +++ b/login-helper/login-helper.c @@ -22,25 +22,24 @@ */ /* login-helper.c: minimal implementation of Accessibility_LoginHelper.idl */ -#include +#include #include "login-helper.h" +#include "spi-common/spi-dbus.h" +#include "droute/droute.h" /* Our parent Gtk object type */ -#define PARENT_TYPE BONOBO_TYPE_OBJECT +#define PARENT_TYPE G_TYPE_OBJECT /* A pointer to our parent object class */ -static BonoboObjectClass *bonobo_object_parent_class; +static GObjectClass *g_object_parent_class; static void login_helper_finalize (GObject *object) { - LoginHelper *helper = (LoginHelper *) object; - CORBA_Environment ev; - - (G_OBJECT_CLASS (bonobo_object_parent_class))->finalize (object); + (G_OBJECT_CLASS (g_object_parent_class))->finalize (object); } -gboolean +static gboolean login_helper_set_safe (LoginHelper *helper, gboolean safe) { LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper); @@ -51,17 +50,32 @@ login_helper_set_safe (LoginHelper *helper, gboolean safe) return FALSE; } -static CORBA_boolean -impl_login_helper_set_safe (PortableServer_Servant servant, - const CORBA_boolean safe, - CORBA_Environment *ev) +static DBusMessage * +impl_set_safe (DBusConnection *bus, DBusMessage *message, void *user_data) { - LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant)); + LoginHelper *helper = user_data; + + DBusError error; + dbus_bool_t safe; + dbus_bool_t rv; + DBusMessage *reply; - return login_helper_set_safe (helper, safe); + dbus_error_init (&error); + if (!dbus_message_get_args + (message, &error, DBUS_TYPE_BOOLEAN, &safe, DBUS_TYPE_INVALID)) + { + return SPI_DBUS_RETURN_ERROR (message, &error); + } + rv = login_helper_set_safe (helper, safe); + reply = dbus_message_new_method_return (message); + if (reply) + { + dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &rv, DBUS_TYPE_INVALID); + } + return reply; } -LoginHelperDeviceReqFlags +static LoginHelperDeviceReqFlags login_helper_get_device_reqs (LoginHelper *helper) { LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper); @@ -72,80 +86,24 @@ login_helper_get_device_reqs (LoginHelper *helper) return 0; } -static Accessibility_LoginHelper_DeviceReqList* -impl_login_helper_get_device_reqs (PortableServer_Servant servant, - CORBA_Environment *ev) +static DBusMessage * +impl_get_device_reqs (DBusConnection *bus, DBusMessage *message, void *user_data) { - LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant)); - LoginHelperDeviceReqFlags flags = 0; - gint n_reqs = 0, i = 1, j = 1; - Accessibility_LoginHelper_DeviceReqList *list; + LoginHelper *helper = user_data; + dbus_uint32_t flags = 0; + DBusMessage *reply; flags = login_helper_get_device_reqs (helper); - while (i <= LOGIN_HELPER_LAST_DEFINED) - { - if (flags & i) n_reqs++; - i <<= 1; - } - - list = Accessibility_LoginHelper_DeviceReqList__alloc (); - list->_length = n_reqs; - list->_buffer = Accessibility_LoginHelper_DeviceReqList_allocbuf (list->_length); - - for (i = 0, j = 1; i < n_reqs; i++) - { - Accessibility_LoginHelper_DeviceReq req; - while ((flags & j) == 0) { - j <<= 1; - } - switch (j) - { - case LOGIN_HELPER_GUI_EVENTS: - req = Accessibility_LoginHelper_GUI_EVENTS; - break; - case LOGIN_HELPER_CORE_KEYBOARD: - req = Accessibility_LoginHelper_CORE_KEYBOARD; - break; - case LOGIN_HELPER_CORE_POINTER: - req = Accessibility_LoginHelper_CORE_POINTER; - break; - case LOGIN_HELPER_EXT_INPUT: - req = Accessibility_LoginHelper_EXT_INPUT; - break; - case LOGIN_HELPER_POST_WINDOWS: - req = Accessibility_LoginHelper_POST_WINDOWS; - break; - case LOGIN_HELPER_AUDIO_OUT: - req = Accessibility_LoginHelper_AUDIO_OUT; - break; - case LOGIN_HELPER_AUDIO_IN: - req = Accessibility_LoginHelper_AUDIO_IN; - break; - case LOGIN_HELPER_NETWORK: - req = Accessibility_LoginHelper_NETWORK; - break; - case LOGIN_HELPER_LOCALHOST: - req = Accessibility_LoginHelper_LOCALHOST; - break; - case LOGIN_HELPER_SERIAL_OUT: - req = Accessibility_LoginHelper_SERIAL_OUT; - break; - case LOGIN_HELPER_SERIAL_IN: - req = Accessibility_LoginHelper_SERIAL_IN; - break; - default: - req = 0; - break; - } - list->_buffer[i] = req; - j <<= 1; - } - - return list; + reply = dbus_message_new_method_return (message); + if (reply) + { + dbus_message_append_args (reply, DBUS_TYPE_UINT32, &flags, DBUS_TYPE_INVALID); + } + return reply; } -Window* +static Window* login_helper_get_raise_windows (LoginHelper *helper) { LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper); @@ -156,63 +114,50 @@ login_helper_get_raise_windows (LoginHelper *helper) return NULL; } -static Accessibility_LoginHelper_WindowList* -impl_login_helper_get_raise_windows (PortableServer_Servant servant, - CORBA_Environment *ev) +static DBusMessage * +impl_get_raise_windows (DBusConnection *bus, DBusMessage *message, void *user_data) { - LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant)); + LoginHelper *helper = user_data; unsigned long *wids; - Accessibility_LoginHelper_WindowList *windows; + gint count = 0; + DBusMessage *reply; + DBusMessageIter iter, iter_array; wids = login_helper_get_raise_windows (helper); - - if (wids && *wids) - { - gint i, count = 0; - while (wids[count]) - { - ++count; - } - windows = Accessibility_LoginHelper_WindowList__alloc (); - windows->_length = count; - windows->_buffer = Accessibility_LoginHelper_WindowList_allocbuf (windows->_length); - for (i = 0; i < count; ++i) - { - Accessibility_LoginHelper_WindowInfo winfo; - winfo.winID = wids[i]; - windows->_buffer [i] = winfo; - } - g_free (wids); - return windows; - } - else + reply = dbus_message_new_method_return (message); + if (!reply) return NULL; + dbus_message_iter_init_append (message, &iter); + if (dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "i", &iter_array) && wids) + { + while (*wids) { - return NULL; + // TODO: figure out if this will break on 64-bit systems + dbus_int32_t id = *wids++; + dbus_message_iter_append_basic (&iter_array, DBUS_TYPE_INT32, &id); } + dbus_message_iter_close_container (&iter, &iter_array); + } + if (wids) g_free (wids); + return reply; } static void login_helper_class_init (LoginHelperClass *klass) { GObjectClass * object_class = (GObjectClass *) klass; - POA_Accessibility_LoginHelper__epv *epv = &klass->epv; - bonobo_object_parent_class = g_type_class_peek_parent (klass); + g_object_parent_class = g_type_class_peek_parent (klass); object_class->finalize = login_helper_finalize; - epv->getRaiseWindows = impl_login_helper_get_raise_windows; - epv->getDeviceReqs = impl_login_helper_get_device_reqs; - epv->setSafe = impl_login_helper_set_safe; } static void -login_helper_init (GObject *object) +login_helper_init (LoginHelper *object) { - LoginHelper *helper = LOGIN_HELPER (object); } -BONOBO_TYPE_FUNC_FULL (LoginHelper, - Accessibility_LoginHelper, - PARENT_TYPE, login_helper) +G_DEFINE_TYPE (LoginHelper, + login_helper, + PARENT_TYPE)