[maemo-developers] Rotation support.. :(
From: Cornelius Hald hald at icandy.deDate: Sat Nov 7 17:47:34 EET 2009
- Previous message: Rotation support.. :(
- Next message: Rotation support.. :(
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Aniello, you have to enable the accelerators first. Here's a method copied from my code: void orientation_enable_accelerators() { AppData *app_data = app_data_get(); if (app_data->accelerators == TRUE) { return; } /* TODO: Replace string "req_accelerometer_enable" with constant once we switched to final SDK */ if (osso_rpc_run_system(app_data->osso_ctx, MCE_SERVICE, MCE_REQUEST_PATH, MCE_REQUEST_IF, "req_accelerometer_enable", NULL, DBUS_TYPE_INVALID) == OSSO_OK) { g_printerr("INFO: Accelerometers enabled\n"); app_data->accelerators = TRUE; } else { g_printerr("WARN: Cannot enable accelerometers\n"); } } To save energy you should disable them again if your window is not the top most window. The rest of the code can be found here: https://garage.maemo.org/plugins/scmsvn/viewcvs.php/trunk/conboy/src/orientation.c?revision=514&root=conboy&view=markup Cheers! Conny On Sat, 2009-11-07 at 15:19 +0000, Aniello Del Sorbo wrote: > I am trying to add rotation to Xournal. > > I have defined the DBus message sig as follows: > > #define MCE_SIGNAL_MATCH "type='signal'," \ > "sender='" MCE_SERVICE "'," \ > "path='" MCE_SIGNAL_PATH "'," \ > "interface='" MCE_SIGNAL_IF "'" > > then I've added a DBus filter and handler: > > sys_conn = osso_get_sys_dbus_connection(ctx); > if (sys_conn) { > DBusError error; > dbus_error_init (&error); > dbus_bus_add_match (sys_conn, MCE_SIGNAL_MATCH, &error); > if (dbus_error_is_set(&error)){ > printf("dbus_bus_add_match failed: %s\n", error.message); > dbus_error_free(&error); > } > > if (!dbus_connection_add_filter (sys_conn, > (DBusHandleMessageFunction) mce_filter_func, NULL, NULL)) { > printf("Error dbus_connection_add_filter failed\n"); > } else { > printf ("DBUS filter added\n"); > } > } > > and defined the handler function: > > DBusHandlerResult > mce_filter_func (DBusConnection *connection, DBusMessage *message, void *data) > { > DBusMessageIter iter; > const gchar *mode = NULL; > > printf ("MCE\n"); > > if (dbus_message_is_signal(message, MCE_SIGNAL_IF, > MCE_DEVICE_ORIENTATION_SIG)) { > printf ("is a orientation signal\n"); > if (dbus_message_iter_init(message, &iter)) { > printf ("getting mode\n"); > dbus_message_iter_get_basic(&iter, &mode); > > hildon_rotate_ui (mode); > } > } > > return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; > } > > It compiles, starts up, the MCE function gets called twice when > Xournal starts (it prints MCE twice) and gets called for several other > DBus messages (like screen lock/unlock), but NOT for rotate messages. > > What am I missing? > > Thanks! > > References: > [1] <http://wiki.maemo.org/Using_Fremantle_Widgets#Listening_To_Hardware_Orientation_Changes> > > [2] <http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Porting_Software/Porting_Existing_GTK%2B_Application_to_Maemo_5#Portrait_Mode> > > [3] <https://garage.maemo.org/plugins/scmsvn/viewcvs.php/trunk/omweather/src/weather-portrait.c?revision=2951&root=omweather&view=markup> > > [4] <https://garage.maemo.org/plugins/scmsvn/viewcvs.php/trunk/omweather/src/weather-dbus.c?revision=3265&root=omweather&view=markup> >
- Previous message: Rotation support.. :(
- Next message: Rotation support.. :(
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]