[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 ]
