[maemo-commits] [maemo-commits] r10663 - projects/haf/trunk/libosso/src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Mar 20 17:24:55 EET 2007
- Previous message: [maemo-commits] r10662 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10665 - projects/haf/trunk/libosso/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: kihamala Date: 2007-03-20 17:24:55 +0200 (Tue, 20 Mar 2007) New Revision: 10663 Modified: projects/haf/trunk/libosso/src/osso-display.c Log: added code to ask MCE about the current display state Modified: projects/haf/trunk/libosso/src/osso-display.c =================================================================== --- projects/haf/trunk/libosso/src/osso-display.c 2007-03-20 15:23:51 UTC (rev 10662) +++ projects/haf/trunk/libosso/src/osso-display.c 2007-03-20 15:24:55 UTC (rev 10663) @@ -31,6 +31,69 @@ "type='signal',interface='" MCE_SIGNAL_IF "',"\ "member='" MCE_DISPLAY_SIG "'" +static osso_display_state_t get_display_state(osso_context_t *osso) +{ + DBusMessageIter iter; + DBusMessage* m = NULL, *r = NULL; + DBusError err; + dbus_bool_t ret = FALSE; + char *s = NULL; + assert(osso->sys_conn != NULL); + dbus_error_init(&err); + osso_display_state_t new_state; + + ret = dbus_bus_name_has_owner(osso->sys_conn, MCE_SERVICE, &err); + if (!ret) { + if (dbus_error_is_set(&err)) { + ULOG_ERR_F("error: %s", err.message); + dbus_error_free(&err); + } else { + ULOG_ERR_F("service %s does not exist", + MCE_SERVICE); + } + return OSSO_DISPLAY_ON; /* wild guess */ + } + m = dbus_message_new_method_call(MCE_SERVICE, MCE_REQUEST_OP, + MCE_REQUEST_IF, MCE_DISPLAY_STATUS_GET); + if (m == NULL) { + ULOG_ERR_F("couldn't create message"); + return OSSO_DISPLAY_ON; + } + dbus_error_init(&err); + r = dbus_connection_send_with_reply_and_block(osso->sys_conn, + m, -1, &err); + dbus_message_unref(m); + if (r == NULL) { + ULOG_ERR_F("sending failed: %s", err.message); + dbus_error_free(&err); + return OSSO_DISPLAY_ON; + } + dbus_message_iter_init(r, &iter); + dbus_message_iter_get_basic(&iter, &s); + if (s == NULL) { + ULOG_ERR_F("reply did not have string argument"); + dbus_message_unref(r); + return OSSO_DISPLAY_ON; + } + + if (strncmp(s, MCE_DISPLAY_ON_STRING, + strlen(MCE_DISPLAY_ON_STRING)) == 0) { + new_state = OSSO_DISPLAY_ON; + } else if (strncmp(s, MCE_DISPLAY_DIM_STRING, + strlen(MCE_DISPLAY_DIM_STRING)) == 0) { + new_state = OSSO_DISPLAY_DIMMED; + } else if (strncmp(s, MCE_DISPLAY_OFF_STRING, + strlen(MCE_DISPLAY_OFF_STRING)) == 0) { + new_state = OSSO_DISPLAY_OFF; + } else { + ULOG_ERR_F("Unknown argument: %s", s); + new_state = OSSO_DISPLAY_ON; + } + + dbus_message_unref(r); + return new_state; +} + static void _display_state_handler(osso_context_t *osso, DBusMessage *msg, _osso_callback_data_t *ot, @@ -44,6 +107,7 @@ { _osso_callback_data_t *ot; DBusError error; + osso_display_state_t state; if (osso == NULL || cb == NULL) { ULOG_ERR_F("invalid arguments"); @@ -77,6 +141,11 @@ MCE_SIGNAL_PATH, MCE_SIGNAL_IF, _display_state_handler, ot, FALSE); + + /* call the callback now so that the current state is known */ + state = get_display_state(osso); + (*cb)(state, data); + return OSSO_OK; }
- Previous message: [maemo-commits] r10662 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10665 - projects/haf/trunk/libosso/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]