#include "eom-log.h"
#include "eom-dbus.h"
-#define REPLY_TIME 1000
-#define ARGV_NUM 64
-
-typedef struct _EomDBusClientInfo
-{
- DBusConnection *conn;
- char name[STR_LEN];
- char rule[STR_LEN];
- GSource* src;
- EomDBusClientMethod *methods;
- int fd;
+#define REPLY_TIME 1000
+#define ARGV_NUM 64
+
+typedef struct _EomDBusClientInfo {
+ DBusConnection *conn;
+ char name[STR_LEN];
+ char rule[STR_LEN];
+ GSource *src;
+ EomDBusClientMethod *methods;
+ int fd;
} EomDBusClientInfo;
static EomDBusClientInfo client_info;
-static void _eom_dbus_client_deinit (EomDBusClientInfo *info);
+static void _eom_dbus_client_deinit(EomDBusClientInfo *info);
static int
-_eom_dbus_need_private_conn (void)
+_eom_dbus_need_private_conn(void)
{
- char *env = getenv("EOM_PRIVATE_CONN");
+ char *env = getenv("EOM_PRIVATE_CONN");
- if(env)
- {
- return (atoi(env) > 0) ? 1 : 0;
- INFO ("EOM_PRIVATE_CONN = %s", env);
- }
+ if (env) {
+ return (atoi(env) > 0) ? 1 : 0;
+ INFO("EOM_PRIVATE_CONN = %s", env);
+ }
- return 0;
+ return 0;
}
static int
-_eom_dbus_convert_gvalue_to_message (GValueArray *array, DBusMessage *msg)
+_eom_dbus_convert_gvalue_to_message(GValueArray *array, DBusMessage *msg)
{
- DBusMessageIter iter;
- int i;
-
- if (!array)
- return 1;
-
- if (array->n_values <= 0)
- return 1;
-
- dbus_message_iter_init_append (msg, &iter);
-
- INFO ("[EOM_CLIENT:%s] n_values(%d)", client_info.name, array->n_values);
-
- for (i = 0; i < array->n_values; i++)
- {
- GValue *v = g_value_array_get_nth (array, i);
- GType type = v->g_type;
-
- INFO ("[EOM_CLIENT:%s] type(%d)", client_info.name, (int)type);
-
- switch (type)
- {
- case G_TYPE_INT:
- {
- int integer = g_value_get_int (v);
-
- if (!dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &integer))
- {
- ERR ("[EOM_CLIENT:%s] failed: int append", client_info.name);
- return 0;
- }
- }
- break;
- case G_TYPE_UINT:
- {
- unsigned int uinteger = g_value_get_uint (v);
-
- if (!dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &uinteger))
- {
- ERR ("[EOM_CLIENT:%s] failed: uint append", client_info.name);
- return 0;
- }
- }
- break;
- case G_TYPE_STRING:
- {
- char *string = (char*)g_value_get_string (v);
-
- if (!dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, (void*)&string))
- {
- ERR ("[EOM_CLIENT:%s] failed: uint append", client_info.name);
- return 0;
- }
- }
- break;
- case G_TYPE_VARIANT:
- {
- GVariant *variant = g_value_get_variant (v);
- int data_size = g_variant_get_size (variant);
- void *data = (void*)g_variant_get_data (variant);
- DBusMessageIter sub;
-
- RETV_IF_FAIL (data != NULL, 0);
- RETV_IF_FAIL (data_size > 0, 0);
-
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "y", &sub);
- if (!dbus_message_iter_append_fixed_array (&sub, DBUS_TYPE_BYTE, (void*)&data, data_size))
- {
- ERR ("[EOM_CLIENT:%s] failed: uint append", client_info.name);
- return 0;
- }
- dbus_message_iter_close_container(&iter, &sub);
- }
- break;
- default:
- return 0;
- }
- }
-
- return 1;
+ DBusMessageIter iter;
+ int i;
+
+ if (!array)
+ return 1;
+
+ if (array->n_values <= 0)
+ return 1;
+
+ dbus_message_iter_init_append(msg, &iter);
+
+ INFO("[EOM_CLIENT:%s] n_values(%d)", client_info.name, array->n_values);
+
+ for (i = 0; i < array->n_values; i++) {
+ GValue *v = g_value_array_get_nth(array, i);
+ GType type = v->g_type;
+
+ INFO("[EOM_CLIENT:%s] type(%d)", client_info.name, (int)type);
+
+ switch (type) {
+ case G_TYPE_INT:
+ {
+ int integer = g_value_get_int(v);
+
+ if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &integer)) {
+ ERR("[EOM_CLIENT:%s] failed: int append", client_info.name);
+ return 0;
+ }
+ }
+ break;
+ case G_TYPE_UINT:
+ {
+ unsigned int uinteger = g_value_get_uint(v);
+
+ if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &uinteger)) {
+ ERR("[EOM_CLIENT:%s] failed: uint append", client_info.name);
+ return 0;
+ }
+ }
+ break;
+ case G_TYPE_STRING:
+ {
+ char *string = (char *)g_value_get_string(v);
+
+ if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, (void *)&string)) {
+ ERR("[EOM_CLIENT:%s] failed: uint append", client_info.name);
+ return 0;
+ }
+ }
+ break;
+ case G_TYPE_VARIANT:
+ {
+ GVariant *variant = g_value_get_variant(v);
+ int data_size = g_variant_get_size(variant);
+ void *data = (void *)g_variant_get_data(variant);
+ DBusMessageIter sub;
+
+ RETV_IF_FAIL(data != NULL, 0);
+ RETV_IF_FAIL(data_size > 0, 0);
+
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "y", &sub);
+ if (!dbus_message_iter_append_fixed_array(&sub, DBUS_TYPE_BYTE, (void *)&data, data_size)) {
+ ERR("[EOM_CLIENT:%s] failed: uint append", client_info.name);
+ return 0;
+ }
+ dbus_message_iter_close_container(&iter, &sub);
+ }
+ break;
+ default:
+ return 0;
+ }
+ }
+
+ return 1;
}
static GValueArray*
-_eom_dbus_convert_message_to_gvalue (DBusMessage *msg)
+_eom_dbus_convert_message_to_gvalue(DBusMessage *msg)
{
- GValueArray *array;
- DBusMessageIter iter;
-
- if (!dbus_message_iter_init (msg, &iter))
- return NULL;
-
- array = g_value_array_new (0);
-
- do
- {
- int type = dbus_message_iter_get_arg_type (&iter);
- GValue v = G_VALUE_INIT;
-
- INFO ("[EOM_CLIENT:%s] type(%c(%d))", client_info.name, (char)type, type);
-
- switch (type)
- {
- case DBUS_TYPE_INT32:
- {
- int integer = 0;
- dbus_message_iter_get_basic (&iter, &integer);
- g_value_init (&v, G_TYPE_INT);
- g_value_set_int (&v, integer);
- array = g_value_array_append (array, &v);
- g_value_unset (&v);
- }
- break;
- case DBUS_TYPE_UINT32:
- {
- unsigned int uinteger = 0;
- dbus_message_iter_get_basic (&iter, &uinteger);
- g_value_init (&v, G_TYPE_UINT);
- g_value_set_uint (&v, uinteger);
- array = g_value_array_append (array, &v);
- g_value_unset (&v);
- }
- break;
- case DBUS_TYPE_STRING:
- {
- char *string = NULL;
- dbus_message_iter_get_basic (&iter, &string);
- g_value_init (&v, G_TYPE_STRING);
- g_value_set_string (&v, string);
- array = g_value_array_append (array, &v);
- g_value_unset (&v);
- }
- break;
- default:
- NEVER_GET_HERE ();
- g_value_array_free (array);
- return NULL;
- }
- }
- while (dbus_message_iter_has_next (&iter) && dbus_message_iter_next (&iter));
-
- return array;
+ GValueArray *array;
+ DBusMessageIter iter;
+
+ if (!dbus_message_iter_init(msg, &iter))
+ return NULL;
+
+ array = g_value_array_new(0);
+
+ do {
+ int type = dbus_message_iter_get_arg_type(&iter);
+ GValue v = G_VALUE_INIT;
+
+ INFO("[EOM_CLIENT:%s] type(%c(%d))", client_info.name, (char)type, type);
+
+ switch (type) {
+ case DBUS_TYPE_INT32:
+ {
+ int integer = 0;
+ dbus_message_iter_get_basic(&iter, &integer);
+ g_value_init(&v, G_TYPE_INT);
+ g_value_set_int(&v, integer);
+ array = g_value_array_append(array, &v);
+ g_value_unset(&v);
+ }
+ break;
+ case DBUS_TYPE_UINT32:
+ {
+ unsigned int uinteger = 0;
+ dbus_message_iter_get_basic(&iter, &uinteger);
+ g_value_init(&v, G_TYPE_UINT);
+ g_value_set_uint(&v, uinteger);
+ array = g_value_array_append(array, &v);
+ g_value_unset(&v);
+ }
+ break;
+ case DBUS_TYPE_STRING:
+ {
+ char *string = NULL;
+ dbus_message_iter_get_basic(&iter, &string);
+ g_value_init(&v, G_TYPE_STRING);
+ g_value_set_string(&v, string);
+ array = g_value_array_append(array, &v);
+ g_value_unset(&v);
+ }
+ break;
+ default:
+ NEVER_GET_HERE();
+ g_value_array_free(array);
+ return NULL;
+ }
+ } while (dbus_message_iter_has_next(&iter) && dbus_message_iter_next(&iter));
+
+ return array;
}
static void
-_eom_dbus_client_process_message (EomDBusClientInfo *info, DBusMessage *msg)
+_eom_dbus_client_process_message(EomDBusClientInfo *info, DBusMessage *msg)
{
- EomDBusClientMethod **prev;
- DBusError err;
+ EomDBusClientMethod **prev;
+ DBusError err;
- dbus_error_init (&err);
+ dbus_error_init(&err);
- INFO ("[CLIENT] Process a message (%s.%s)",
- dbus_message_get_interface (msg), dbus_message_get_member (msg));
+ INFO("[CLIENT] Process a message (%s.%s)",
+ dbus_message_get_interface(msg), dbus_message_get_member(msg));
- RET_IF_FAIL (info->conn != NULL);
+ RET_IF_FAIL(info->conn != NULL);
- for (prev = &info->methods; *prev; prev = &(*prev)->next)
- {
- EomDBusClientMethod *method = *prev;
+ for (prev = &info->methods; *prev; prev = &(*prev)->next) {
+ EomDBusClientMethod *method = *prev;
- if (!strcmp (dbus_message_get_member (msg), method->name))
- {
- GValueArray *array = _eom_dbus_convert_message_to_gvalue (msg);
+ if (!strcmp(dbus_message_get_member(msg), method->name)) {
+ GValueArray *array = _eom_dbus_convert_message_to_gvalue(msg);
- if (method->func)
- method->func (method->data, array);
+ if (method->func)
+ method->func(method->data, array);
- if (array)
- g_value_array_free (array);
+ if (array)
+ g_value_array_free(array);
- dbus_error_free (&err);
+ dbus_error_free(&err);
- return;
- }
- }
+ return;
+ }
+ }
}
gboolean
-_eom_dbus_client_cb (GIOChannel *src, GIOCondition cond, gpointer data)
+_eom_dbus_client_cb(GIOChannel *src, GIOCondition cond, gpointer data)
{
- EomDBusClientInfo *info = (EomDBusClientInfo*)data;
+ EomDBusClientInfo *info = (EomDBusClientInfo *)data;
- if (!info || !info->conn || info->fd < 0)
- return false;
+ if (!info || !info->conn || info->fd < 0)
+ return false;
- do
- {
- dbus_connection_read_write_dispatch (info->conn, 0);
- }
- while (info->conn &&
- dbus_connection_get_is_connected (info->conn) &&
- dbus_connection_get_dispatch_status (info->conn) ==
- DBUS_DISPATCH_DATA_REMAINS);
+ do {
+ if (info->conn)
+ dbus_connection_read_write_dispatch(info->conn, 0);
+ } while (info->conn &&
+ dbus_connection_get_is_connected(info->conn) &&
+ dbus_connection_get_dispatch_status(info->conn) ==
+ DBUS_DISPATCH_DATA_REMAINS);
- return true;
+ return true;
}
static DBusHandlerResult
-_eom_dbus_client_msg_handler (DBusConnection *connection, DBusMessage *msg, void *data)
+_eom_dbus_client_msg_handler(DBusConnection *connection, DBusMessage *msg, void *data)
{
- EomDBusClientInfo *info = (EomDBusClientInfo*)data;
+ EomDBusClientInfo *info = (EomDBusClientInfo *)data;
- if (!info || !info->conn || !msg)
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ if (!info || !info->conn || !msg)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- INFO("[Client] Got a message (%s.%s)",
- dbus_message_get_interface (msg), dbus_message_get_member (msg));
+ INFO("[Client] Got a message (%s.%s)",
+ dbus_message_get_interface(msg), dbus_message_get_member(msg));
- _eom_dbus_client_process_message (info, msg);
+ _eom_dbus_client_process_message(info, msg);
- return DBUS_HANDLER_RESULT_HANDLED;
+ return DBUS_HANDLER_RESULT_HANDLED;
}
static DBusHandlerResult
-_eom_dbus_client_msg_filter (DBusConnection *conn, DBusMessage *msg, void *data)
+_eom_dbus_client_msg_filter(DBusConnection *conn, DBusMessage *msg, void *data)
{
- EomDBusClientInfo *info = (EomDBusClientInfo*)data;
+ EomDBusClientInfo *info = (EomDBusClientInfo *)data;
- if (!info)
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ if (!info)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- if (dbus_message_is_signal (msg, DBUS_INTERFACE_LOCAL, "Disconnected"))
- {
- INFO ("[EOM] disconnected by signal");
- _eom_dbus_client_deinit (info);
+ if (dbus_message_is_signal(msg, DBUS_INTERFACE_LOCAL, "Disconnected")) {
+ INFO("[EOM] disconnected by signal");
+ _eom_dbus_client_deinit(info);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
static int
_eom_dbus_client_init(EomDBusClientInfo *info)
{
- DBusError err;
- int ret;
- DBusObjectPathVTable vtable = {.message_function = _eom_dbus_client_msg_handler, };
- GIOChannel* channel;
-
- dbus_error_init (&err);
-
- if (_eom_dbus_need_private_conn ())
- info->conn = dbus_bus_get_private (DBUS_BUS_SYSTEM, &err);
- else
- info->conn = dbus_bus_get (DBUS_BUS_SYSTEM, &err);
-
- if (dbus_error_is_set (&err))
- {
- ERR ("[EOM] failed: connection (%s)", err.message);
- goto free_err;
- }
- if (!info->conn)
- {
- ERR ("[EOM] failed: connection NULL");
- goto free_err;
- }
-
- ret = dbus_bus_request_name (info->conn, info->name,
- DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
- if (dbus_error_is_set (&err))
- {
- ERR ("[EOM] failed: request name (%s)", err.message);
- goto free_conn;
- }
- if (ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)
- {
- ERR ("[EOM] failed: Not Primary Owner (%d)", ret);
- goto free_conn;
- }
-
- snprintf (info->rule, sizeof (info->rule), "interface='%s'",
- EOM_DBUS_INTERFACE);
-
- dbus_bus_add_match (info->conn, info->rule, &err);
- dbus_connection_flush(info->conn);
- if (dbus_error_is_set (&err))
- {
- ERR ("[EOM] failed: add match (%s)", err.message);
- goto free_name;
- }
-
- if (!dbus_connection_register_object_path (info->conn,
- EOM_DBUS_PATH, &vtable,
- info))
- {
- ERR ("[EOM] failed: register object path");
- goto free_match;
- }
-
- dbus_connection_set_exit_on_disconnect (info->conn, FALSE);
-
- if (!dbus_connection_add_filter (info->conn, _eom_dbus_client_msg_filter, info, NULL))
- {
- ERR ("[EOM] failed: add filter (%s)", err.message);
- goto free_register;
- }
-
- if (!dbus_connection_get_unix_fd (info->conn, &info->fd) || info->fd < 0)
- {
- ERR ("[EOM] failed: get fd");
- goto free_filter;
- }
-
- dbus_error_free (&err);
-
- channel = g_io_channel_unix_new(info->fd);
- g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL);
-
- info->src = g_io_create_watch(channel, G_IO_IN);
- g_source_set_callback(info->src, (GSourceFunc)_eom_dbus_client_cb, (gpointer)info, NULL);
- g_source_attach(info->src, NULL);
-
- g_io_channel_unref(channel);
-
- INFO("[EOM_CLIENT] connected");
-
- return 1;
+ DBusError err;
+ int ret;
+ DBusObjectPathVTable vtable = {.message_function = _eom_dbus_client_msg_handler, };
+ GIOChannel *channel;
+
+ dbus_error_init(&err);
+
+ if (_eom_dbus_need_private_conn())
+ info->conn = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
+ else
+ info->conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
+
+ if (dbus_error_is_set(&err)) {
+ ERR("[EOM] failed: connection (%s)", err.message);
+ goto free_err;
+ }
+ if (!info->conn) {
+ ERR("[EOM] failed: connection NULL");
+ goto free_err;
+ }
+
+ ret = dbus_bus_request_name(info->conn, info->name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
+ if (dbus_error_is_set(&err)) {
+ ERR("[EOM] failed: request name (%s)", err.message);
+ goto free_conn;
+ }
+ if (ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+ ERR("[EOM] failed: Not Primary Owner (%d)", ret);
+ goto free_conn;
+ }
+
+ snprintf(info->rule, sizeof(info->rule), "interface='%s'", EOM_DBUS_INTERFACE);
+
+ dbus_bus_add_match(info->conn, info->rule, &err);
+ dbus_connection_flush(info->conn);
+ if (dbus_error_is_set(&err)) {
+ ERR("[EOM] failed: add match (%s)", err.message);
+ goto free_name;
+ }
+
+ if (!dbus_connection_register_object_path(info->conn, EOM_DBUS_PATH, &vtable, info)) {
+ ERR("[EOM] failed: register object path");
+ goto free_match;
+ }
+
+ dbus_connection_set_exit_on_disconnect(info->conn, FALSE);
+
+ if (!dbus_connection_add_filter(info->conn, _eom_dbus_client_msg_filter, info, NULL)) {
+ ERR("[EOM] failed: add filter (%s)", err.message);
+ goto free_register;
+ }
+
+ if (!dbus_connection_get_unix_fd(info->conn, &info->fd) || info->fd < 0) {
+ ERR("[EOM] failed: get fd");
+ goto free_filter;
+ }
+
+ dbus_error_free(&err);
+
+ channel = g_io_channel_unix_new(info->fd);
+ g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL);
+
+ info->src = g_io_create_watch(channel, G_IO_IN);
+ g_source_set_callback(info->src, (GSourceFunc)_eom_dbus_client_cb, (gpointer)info, NULL);
+ g_source_attach(info->src, NULL);
+
+ g_io_channel_unref(channel);
+
+ INFO("[EOM_CLIENT] connected");
+
+ return 1;
free_filter:
- dbus_connection_remove_filter (info->conn, _eom_dbus_client_msg_filter, info);
+ dbus_connection_remove_filter(info->conn, _eom_dbus_client_msg_filter, info);
free_register:
- dbus_connection_unregister_object_path (info->conn, EOM_DBUS_PATH);
+ dbus_connection_unregister_object_path(info->conn, EOM_DBUS_PATH);
free_match:
- dbus_bus_remove_match (info->conn, info->rule, &err);
- dbus_error_free (&err);
+ dbus_bus_remove_match(info->conn, info->rule, &err);
+ dbus_error_free(&err);
free_name:
- dbus_bus_release_name (info->conn, info->name, &err);
- dbus_error_free (&err);
+ dbus_bus_release_name(info->conn, info->name, &err);
+ dbus_error_free(&err);
free_conn:
- dbus_connection_close (info->conn);
+ dbus_connection_close(info->conn);
free_err:
- dbus_error_free (&err);
- info->conn = NULL;
- info->fd = -1;
+ dbus_error_free(&err);
+ info->conn = NULL;
+ info->fd = -1;
- return 0;
+ return 0;
}
static void
-_eom_dbus_client_deinit (EomDBusClientInfo *info)
+_eom_dbus_client_deinit(EomDBusClientInfo *info)
{
- DBusError err;
-
- if (!info->conn)
- return;
-
- if (info->src)
- {
- g_source_destroy (info->src);
- g_source_unref (info->src);
- }
-
- if (info->conn)
- {
- dbus_error_init (&err);
- dbus_bus_remove_match (info->conn, info->rule, &err);
- dbus_error_free (&err);
- dbus_bus_release_name (info->conn, info->name, &err);
- dbus_error_free (&err);
- dbus_connection_unref (info->conn);
- }
-
- memset (info, 0, sizeof (EomDBusClientInfo));
- info->fd = -1;
-
- INFO ("[EOM] disconnected");
+ DBusError err;
+
+ if (!info->conn)
+ return;
+
+ if (info->src) {
+ g_source_destroy(info->src);
+ g_source_unref(info->src);
+ }
+
+ if (info->conn) {
+ dbus_error_init(&err);
+ dbus_bus_remove_match(info->conn, info->rule, &err);
+ dbus_error_free(&err);
+ dbus_bus_release_name(info->conn, info->name, &err);
+ dbus_error_free(&err);
+ dbus_connection_unref(info->conn);
+ }
+
+ memset(info, 0, sizeof(EomDBusClientInfo));
+ info->fd = -1;
+
+ INFO("[EOM] disconnected");
}
bool
-eom_dbus_client_connect (void)
+eom_dbus_client_connect(void)
{
- if (client_info.conn)
- return true;
+ if (client_info.conn)
+ return true;
- snprintf (client_info.name, STR_LEN, "org.eom.client%d", getpid());
+ snprintf(client_info.name, STR_LEN, "org.eom.client%d", getpid());
- client_info.fd = -1;
+ client_info.fd = -1;
- if(!_eom_dbus_client_init (&client_info))
- return false;
+ if (!_eom_dbus_client_init(&client_info))
+ return false;
- return true;
+ return true;
}
void
-eom_dbus_client_disconnect (void)
+eom_dbus_client_disconnect(void)
{
- _eom_dbus_client_deinit (&client_info);
+ _eom_dbus_client_deinit(&client_info);
}
bool
-eom_dbus_client_add_method (EomDBusClientMethod *method)
+eom_dbus_client_add_method(EomDBusClientMethod *method)
{
- EomDBusClientMethod **prev;
+ EomDBusClientMethod **prev;
- for (prev = &client_info.methods; *prev; prev = &(*prev)->next);
+ for (prev = &client_info.methods; *prev; prev = &(*prev)->next);
- method->next = NULL;
- *prev = method;
+ method->next = NULL;
+ *prev = method;
- return true;
+ return true;
}
void
-eom_dbus_client_remove_method (EomDBusClientMethod *method)
+eom_dbus_client_remove_method(EomDBusClientMethod *method)
{
- EomDBusClientMethod **prev;
-
- for (prev = &client_info.methods; *prev; prev = &(*prev)->next)
- if (*prev == method)
- {
- *prev = method->next;
- method->next = NULL;
- break;
- }
+ EomDBusClientMethod **prev;
+
+ for (prev = &client_info.methods; *prev; prev = &(*prev)->next)
+ if (*prev == method) {
+ *prev = method->next;
+ method->next = NULL;
+ break;
+ }
}
GValueArray*
-eom_dbus_client_send_message (char* method, GValueArray *array)
+eom_dbus_client_send_message(char *method, GValueArray *array)
{
- DBusMessage *msg = NULL;
- DBusMessage *reply_msg = NULL;
- GValueArray *ret_array = NULL;
- DBusError err;
+ DBusMessage *msg = NULL;
+ DBusMessage *reply_msg = NULL;
+ GValueArray *ret_array = NULL;
+ DBusError err;
- RETV_IF_FAIL (client_info.conn != NULL, NULL);
+ RETV_IF_FAIL(client_info.conn != NULL, NULL);
- dbus_error_init (&err);
+ dbus_error_init(&err);
- msg = dbus_message_new_method_call (EOM_DBUS_SERVER, EOM_DBUS_PATH,
- EOM_DBUS_INTERFACE, method);
- GOTO_IF_FAIL (msg != NULL, err_send);
+ msg = dbus_message_new_method_call(EOM_DBUS_SERVER, EOM_DBUS_PATH, EOM_DBUS_INTERFACE, method);
+ GOTO_IF_FAIL(msg != NULL, err_send);
- INFO ("[EOM_CLIENT:%s] Send message(%s)", client_info.name, method);
+ INFO("[EOM_CLIENT:%s] Send message(%s)", client_info.name, method);
- if (!_eom_dbus_convert_gvalue_to_message (array, msg))
- {
- ERR ("[EOM_CLIENT:%s] failed: gvalue_to_message", client_info.name);
- goto err_send;
- }
+ if (!_eom_dbus_convert_gvalue_to_message(array, msg)) {
+ ERR("[EOM_CLIENT:%s] failed: gvalue_to_message", client_info.name);
+ goto err_send;
+ }
- reply_msg = dbus_connection_send_with_reply_and_block (client_info.conn, msg,
- REPLY_TIME, &err);
- if (dbus_error_is_set (&err))
- {
- ERR ("[EOM_CLIENT:%s] failed: send (%s)", client_info.name, err.message);
- goto err_send;
- }
- GOTO_IF_FAIL (reply_msg != NULL, err_send);
+ reply_msg = dbus_connection_send_with_reply_and_block(client_info.conn, msg, REPLY_TIME, &err);
+ if (dbus_error_is_set(&err)) {
+ ERR("[EOM_CLIENT:%s] failed: send (%s)", client_info.name, err.message);
+ goto err_send;
+ }
+ GOTO_IF_FAIL(reply_msg != NULL, err_send);
- INFO ("[EOM_CLIENT:%s] Got reply", client_info.name);
+ INFO("[EOM_CLIENT:%s] Got reply", client_info.name);
- ret_array = _eom_dbus_convert_message_to_gvalue (reply_msg);
+ ret_array = _eom_dbus_convert_message_to_gvalue(reply_msg);
- dbus_message_unref(msg);
- dbus_message_unref(reply_msg);
- dbus_error_free (&err);
+ dbus_message_unref(msg);
+ dbus_message_unref(reply_msg);
+ dbus_error_free(&err);
- return ret_array;
+ return ret_array;
err_send:
- if (msg)
- dbus_message_unref(msg);
- if (reply_msg)
- dbus_message_unref(reply_msg);
- if (ret_array)
- g_value_array_free (ret_array);
+ if (msg)
+ dbus_message_unref(msg);
+ if (reply_msg)
+ dbus_message_unref(reply_msg);
+ if (ret_array)
+ g_value_array_free(ret_array);
- dbus_error_free (&err);
+ dbus_error_free(&err);
- return NULL;
+ return NULL;
}
#include "eom-dbus.h"
#include "eom-private.h"
-typedef struct
-{
- eom_output_notify_type_e type; /**< External output type */
- eom_output_id output_id; /**< External output id */
+typedef struct {
+ eom_output_notify_type_e type; /**< External output type */
+ eom_output_id output_id; /**< External output id */
} eom_output_notify_base_s;
-typedef struct
-{
- eom_output_notify_type_e type; /**< External output type */
- eom_output_id output_id; /**< External output id */
+typedef struct {
+ eom_output_notify_type_e type; /**< External output type */
+ eom_output_id output_id; /**< External output id */
} eom_output_notify_add_s;
-typedef struct
-{
- eom_output_notify_type_e type; /**< External output type */
- eom_output_id output_id; /**< External output id */
+typedef struct {
+ eom_output_notify_type_e type; /**< External output type */
+ eom_output_id output_id; /**< External output id */
} eom_output_notify_remove_s;
-typedef struct
-{
- eom_output_notify_type_e type; /**< External output type */
- eom_output_id output_id; /**< External output id */
- eom_output_mode_e old_mode; /**< External output mode */
- eom_output_mode_e new_mode; /**< External output mode */
+typedef struct {
+ eom_output_notify_type_e type; /**< External output type */
+ eom_output_id output_id; /**< External output id */
+ eom_output_mode_e old_mode; /**< External output mode */
+ eom_output_mode_e new_mode; /**< External output mode */
} eom_output_notify_mode_change_s;
-typedef struct
-{
- eom_output_notify_type_e type; /**< External output type */
- eom_output_id output_id; /**< External output id */
- eom_output_attribute_e attribute; /**< External output attribute */
- eom_output_attribute_state_e attr_state; /**< External output attribute state */
+typedef struct {
+ eom_output_notify_type_e type; /**< External output type */
+ eom_output_id output_id; /**< External output id */
+ eom_output_attribute_e attribute; /**< External output attribute */
+ eom_output_attribute_state_e attr_state; /**< External output attribute state */
} eom_output_notify_attribute_change_s;
-typedef union
-{
- eom_output_notify_base_s base; /**< Base structure for eom notify */
- eom_output_notify_add_s output_add; /**< #EOM_OUTPUT_NOTIFY_ADD notify */
- eom_output_notify_remove_s output_remove; /**< #EOM_OUTPUT_NOTIFY_REMOVE notify */
- eom_output_notify_mode_change_s mode_change; /**< #EOM_OUTPUT_NOTIFY_MODE_CHANGED notify */
- eom_output_notify_attribute_change_s attr_change; /**< #EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED notify */
+typedef union {
+ eom_output_notify_base_s base; /**< Base structure for eom notify */
+ eom_output_notify_add_s output_add; /**< #EOM_OUTPUT_NOTIFY_ADD notify */
+ eom_output_notify_remove_s output_remove; /**< #EOM_OUTPUT_NOTIFY_REMOVE notify */
+ eom_output_notify_mode_change_s mode_change; /**< #EOM_OUTPUT_NOTIFY_MODE_CHANGED notify */
+ eom_output_notify_attribute_change_s attr_change; /**< #EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED notify */
} eom_output_notify_s;
-typedef struct
-{
- eom_output_notify_type_e type;
- eom_output_added_cb add_func;
- eom_output_removed_cb remove_func;
- eom_mode_changed_cb mode_change_func;
- eom_attribute_changed_cb attribute_change_func;
- void *user_data;
+typedef struct {
+ eom_output_notify_type_e type;
+ eom_output_added_cb add_func;
+ eom_output_removed_cb remove_func;
+ eom_mode_changed_cb mode_change_func;
+ eom_attribute_changed_cb attribute_change_func;
+ void *user_data;
} eom_output_notify_cb_info;
bool eom_debug_on;
-static pthread_mutex_t eom_lock;
+static pthread_mutex_t eom_lock;
-static bool dbus_initialized;
+static bool dbus_initialized;
static EomDBusClientMethod dbus_method;
-static GList *cb_info_list;
-static GList *output_info_list;
+static GList *cb_info_list;
+static GList *output_info_list;
-static void _eom_output_process_notify_cb (void *data, GValueArray *array);
-static eom_output_info* _eom_find_output_info (eom_output_id output_id);
-static eom_output_info* _eom_alloc_output_info (int output_id, int output_type);
+static void _eom_output_process_notify_cb(void *data, GValueArray *array);
+static eom_output_info *_eom_find_output_info(eom_output_id output_id);
+static eom_output_info *_eom_alloc_output_info(int output_id, int output_type);
static const char*
-TYPE (eom_output_type_e output_type)
+TYPE(eom_output_type_e output_type)
{
- switch (output_type)
- {
- case EOM_OUTPUT_TYPE_VGA:
- return "VGA";
- case EOM_OUTPUT_TYPE_DVII:
- return "DVII";
- case EOM_OUTPUT_TYPE_DVID:
- return "DVID";
- case EOM_OUTPUT_TYPE_DVIA:
- return "DVIA";
- case EOM_OUTPUT_TYPE_COMPOSITE:
- return "COMPOSITE";
- case EOM_OUTPUT_TYPE_SVIDEO:
- return "SVIDEO";
- case EOM_OUTPUT_TYPE_LVDS:
- return "LVDS";
- case EOM_OUTPUT_TYPE_COMPONENT:
- return "COMPONENT";
- case EOM_OUTPUT_TYPE_9PINDIN:
- return "9PINDIN";
- case EOM_OUTPUT_TYPE_DISPLAYPORT:
- return "DISPLAYPORT";
- case EOM_OUTPUT_TYPE_HDMIA:
- return "HDMIA";
- case EOM_OUTPUT_TYPE_HDMIB:
- return "HDMIB";
- case EOM_OUTPUT_TYPE_TV:
- return "TV";
- case EOM_OUTPUT_TYPE_EDP:
- return "EDP";
- case EOM_OUTPUT_TYPE_VIRTUAL:
- return "VIRTUAL";
- case EOM_OUTPUT_TYPE_DSI:
- return "DSI";
- default:
- return "UNKNOWN";
- }
- return "UNKNOWN";
+ switch (output_type) {
+ case EOM_OUTPUT_TYPE_VGA:
+ return "VGA";
+ case EOM_OUTPUT_TYPE_DVII:
+ return "DVII";
+ case EOM_OUTPUT_TYPE_DVID:
+ return "DVID";
+ case EOM_OUTPUT_TYPE_DVIA:
+ return "DVIA";
+ case EOM_OUTPUT_TYPE_COMPOSITE:
+ return "COMPOSITE";
+ case EOM_OUTPUT_TYPE_SVIDEO:
+ return "SVIDEO";
+ case EOM_OUTPUT_TYPE_LVDS:
+ return "LVDS";
+ case EOM_OUTPUT_TYPE_COMPONENT:
+ return "COMPONENT";
+ case EOM_OUTPUT_TYPE_9PINDIN:
+ return "9PINDIN";
+ case EOM_OUTPUT_TYPE_DISPLAYPORT:
+ return "DISPLAYPORT";
+ case EOM_OUTPUT_TYPE_HDMIA:
+ return "HDMIA";
+ case EOM_OUTPUT_TYPE_HDMIB:
+ return "HDMIB";
+ case EOM_OUTPUT_TYPE_TV:
+ return "TV";
+ case EOM_OUTPUT_TYPE_EDP:
+ return "EDP";
+ case EOM_OUTPUT_TYPE_VIRTUAL:
+ return "VIRTUAL";
+ case EOM_OUTPUT_TYPE_DSI:
+ return "DSI";
+ default:
+ return "UNKNOWN";
+ }
+ return "UNKNOWN";
}
static void
-_eom_get_debug_evn (void)
+_eom_get_debug_evn(void)
{
- char *env = getenv("EOM_DEBUG");
+ char *env = getenv("EOM_DEBUG");
- if(env)
- {
- eom_debug_on = (atoi(env) > 0) ? true : false;
+ if (env) {
+ eom_debug_on = (atoi(env) > 0) ? true : false;
#ifdef HAVE_DLOG
- fprintf (stderr, "eom dlog on\n");
+ fprintf(stderr, "eom dlog on\n");
#else
- fprintf (stderr, "eom dlog off\n");
+ fprintf(stderr, "eom dlog off\n");
#endif
- INFO ("EOM_DEBUG = %s", env);
- }
- else
- eom_debug_on = 0;
+ INFO("EOM_DEBUG = %s", env);
+ } else
+ eom_debug_on = 0;
}
static bool
-_eom_mutex_init (void)
+_eom_mutex_init(void)
{
- static bool init = false;
+ static bool init = false;
- if (init)
- return true;
+ if (init)
+ return true;
- if (pthread_mutex_init (&eom_lock, NULL))
- {
- ERRNO ("fail: mutex init");
- return false;
- }
+ if (pthread_mutex_init(&eom_lock, NULL)) {
+ ERRNO("fail: mutex init");
+ return false;
+ }
- init = true;
+ init = true;
- return true;
+ return true;
}
void
-_eom_mutex_lock (void)
+_eom_mutex_lock(void)
{
- if (!_eom_mutex_init ())
- return;
+ if (!_eom_mutex_init())
+ return;
- pthread_mutex_lock (&eom_lock);
+ pthread_mutex_lock(&eom_lock);
}
void
-_eom_mutex_unlock (void)
+_eom_mutex_unlock(void)
{
- pthread_mutex_unlock (&eom_lock);
+ pthread_mutex_unlock(&eom_lock);
}
static bool
-_eom_dbus_init (void)
+_eom_dbus_init(void)
{
- if (dbus_initialized)
- return true;
+ if (dbus_initialized)
+ return true;
- if (!eom_dbus_client_connect ())
- return false;
+ if (!eom_dbus_client_connect())
+ return false;
- snprintf (dbus_method.name, sizeof (dbus_method.name), "%s", "Notify");
- dbus_method.func = _eom_output_process_notify_cb;
- dbus_method.data = NULL;
- eom_dbus_client_add_method (&dbus_method);
+ snprintf(dbus_method.name, sizeof(dbus_method.name), "%s", "Notify");
+ dbus_method.func = _eom_output_process_notify_cb;
+ dbus_method.data = NULL;
+ eom_dbus_client_add_method(&dbus_method);
- dbus_initialized = true;
+ dbus_initialized = true;
- INFO ("dbus init");
+ INFO("dbus init");
- return true;
+ return true;
}
static void
-_eom_dbus_deinit (void)
+_eom_dbus_deinit(void)
{
- if (!dbus_initialized)
- return;
+ if (!dbus_initialized)
+ return;
- /* An output instance and a callback can be created and be added only by user.
- * If there is cb_info_list, it means that user is still
- * watching and interested with eom dbus message.
- */
- if (cb_info_list)
- return;
+ /* An output instance and a callback can be created and be added only by user.
+ * If there is cb_info_list, it means that user is still
+ * watching and interested with eom dbus message.
+ */
+ if (cb_info_list)
+ return;
- eom_dbus_client_remove_method (&dbus_method);
- eom_dbus_client_disconnect ();
+ eom_dbus_client_remove_method(&dbus_method);
+ eom_dbus_client_disconnect();
- dbus_initialized = false;
+ dbus_initialized = false;
}
static void
-_eom_set_output_info_mode (eom_output_info *output_info, int output_mode)
+_eom_set_output_info_mode(eom_output_info *output_info, int output_mode)
{
- RET_IF_FAIL (output_info != NULL);
+ RET_IF_FAIL(output_info != NULL);
- if (output_info->output_mode == output_mode)
- return;
+ if (output_info->output_mode == output_mode)
+ return;
- output_info->output_mode = output_mode;
+ output_info->output_mode = output_mode;
}
static void
-_eom_set_output_attribute (eom_output_info *output_info, eom_output_attribute_e attribute)
+_eom_set_output_attribute(eom_output_info *output_info, eom_output_attribute_e attribute)
{
- RET_IF_FAIL (output_info != NULL);
+ RET_IF_FAIL(output_info != NULL);
- output_info->attribute = attribute;
+ output_info->attribute = attribute;
}
static void
-_eom_set_output_attribute_state (eom_output_info *output_info, eom_output_attribute_state_e state)
+_eom_set_output_attribute_state(eom_output_info *output_info, eom_output_attribute_state_e state)
{
- RET_IF_FAIL (output_info != NULL);
+ RET_IF_FAIL(output_info != NULL);
- output_info->state = state;
+ output_info->state = state;
}
static void
-_eom_set_output_info_size (eom_output_info *output_info, int w, int h)
+_eom_set_output_info_size(eom_output_info *output_info, int w, int h)
{
- RET_IF_FAIL (output_info != NULL);
+ RET_IF_FAIL(output_info != NULL);
- output_info->width = w;
- output_info->height = h;
+ output_info->width = w;
+ output_info->height = h;
}
static void
-_eom_set_output_info_phy_size (eom_output_info *output_info, int w_mm, int h_mm)
+_eom_set_output_info_phy_size(eom_output_info *output_info, int w_mm, int h_mm)
{
- RET_IF_FAIL (output_info != NULL);
+ RET_IF_FAIL(output_info != NULL);
- output_info->mm_width = w_mm;
- output_info->mm_height = h_mm;
+ output_info->mm_width = w_mm;
+ output_info->mm_height = h_mm;
}
static void
-_eom_reset_output_info (eom_output_info *output_info)
+_eom_reset_output_info(eom_output_info *output_info)
{
- RET_IF_FAIL (output_info != NULL);
+ RET_IF_FAIL(output_info != NULL);
- output_info->output_mode = EOM_OUTPUT_MODE_NONE;
- output_info->width = 0;
- output_info->height = 0;
- output_info->mm_width = 0;
- output_info->mm_height = 0;
+ output_info->output_mode = EOM_OUTPUT_MODE_NONE;
+ output_info->width = 0;
+ output_info->height = 0;
+ output_info->mm_width = 0;
+ output_info->mm_height = 0;
}
static void
-_eom_output_call_notify_cb (eom_output_notify_s *notify)
+_eom_output_call_notify_cb(eom_output_notify_s *notify)
{
- GList *l;
-
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
-
- if (!cb_info || cb_info->type != notify->base.type)
- continue;
-
- if (notify->base.type == EOM_OUTPUT_NOTIFY_ADD)
- {
- if (cb_info->add_func == NULL)
- continue;
-
- INFO ("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
-
- cb_info->add_func (notify->base.output_id, cb_info->user_data);
- }
- else if (notify->base.type == EOM_OUTPUT_NOTIFY_REMOVE)
- {
- if (cb_info->remove_func == NULL)
- continue;
-
- INFO ("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
-
- cb_info->remove_func (notify->base.output_id, cb_info->user_data);
- }
- else if (notify->base.type == EOM_OUTPUT_NOTIFY_MODE_CHANGED)
- {
- if (cb_info->mode_change_func == NULL)
- continue;
-
- INFO ("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
-
- cb_info->mode_change_func (notify->base.output_id, cb_info->user_data);
- }
- else if (notify->base.type == EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED)
- {
- if (cb_info->attribute_change_func == NULL)
- continue;
-
- INFO ("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
-
- cb_info->attribute_change_func (notify->base.output_id, cb_info->user_data);
- }
- else
- {
- INFO ("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
- continue;
- }
- }
+ GList *l;
+
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
+
+ if (!cb_info || cb_info->type != notify->base.type)
+ continue;
+
+ if (notify->base.type == EOM_OUTPUT_NOTIFY_ADD) {
+ if (cb_info->add_func == NULL)
+ continue;
+
+ INFO("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
+
+ cb_info->add_func(notify->base.output_id, cb_info->user_data);
+ } else if (notify->base.type == EOM_OUTPUT_NOTIFY_REMOVE) {
+ if (cb_info->remove_func == NULL)
+ continue;
+
+ INFO("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
+
+ cb_info->remove_func(notify->base.output_id, cb_info->user_data);
+ } else if (notify->base.type == EOM_OUTPUT_NOTIFY_MODE_CHANGED) {
+ if (cb_info->mode_change_func == NULL)
+ continue;
+
+ INFO("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
+
+ cb_info->mode_change_func(notify->base.output_id, cb_info->user_data);
+ } else if (notify->base.type == EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED) {
+ if (cb_info->attribute_change_func == NULL)
+ continue;
+
+ INFO("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
+
+ cb_info->attribute_change_func(notify->base.output_id, cb_info->user_data);
+ } else {
+ INFO("cb_info: type(%d) output_id(%d)", notify->base.type, notify->base.output_id);
+ continue;
+ }
+ }
}
static void
-_eom_output_process_notify_cb (void *data, GValueArray *array)
+_eom_output_process_notify_cb(void *data, GValueArray *array)
{
- eom_output_notify_s notify;
- eom_output_info *output_info;
- int notify_type, output_id, output_type, output_mode, w, h, w_mm, h_mm, pid, attr, state;
- GValue *v;
-
- RET_IF_FAIL (array != NULL);
- RET_IF_FAIL (array->n_values == 11);
-
- /* 11 args 0: notify_type 1:output_id, 2:output_type, 3:output_mode, 4:w, 5:h, 6:w_mm, 7:h_mm, 8:pid, 9:attri, 10:state */
- v = g_value_array_get_nth (array, 0);
- notify_type = g_value_get_int (v);
- v = g_value_array_get_nth (array, 1);
- output_id = g_value_get_int (v);
- v = g_value_array_get_nth (array, 2);
- output_type = g_value_get_int (v);
- v = g_value_array_get_nth (array, 3);
- output_mode = g_value_get_int (v);
- v = g_value_array_get_nth (array, 4);
- w = g_value_get_int (v);
- v = g_value_array_get_nth (array, 5);
- h = g_value_get_int (v);
- v = g_value_array_get_nth (array, 6);
- w_mm = g_value_get_int (v);
- v = g_value_array_get_nth (array, 7);
- h_mm = g_value_get_int (v);
- v = g_value_array_get_nth (array, 8);
- pid = g_value_get_int (v);
- v = g_value_array_get_nth (array, 9);
- attr = g_value_get_int (v);
- v = g_value_array_get_nth (array, 10);
- state = g_value_get_int (v);
-
- INFO ("notify: %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
- notify_type, output_id, output_type, output_mode, w, h, w_mm, h_mm, pid, attr, state);
-
- memset (¬ify, 0, sizeof (eom_output_notify_s));
- notify.base.type = notify_type;
- notify.base.output_id = output_id;
-
- _eom_mutex_lock ();
-
- output_info = _eom_find_output_info (output_id);
- GOTO_IF_FAIL (output_info != NULL, exit);
-
- switch (notify_type)
- {
- case EOM_OUTPUT_NOTIFY_ADD:
- {
- INFO ("'%s(%d)' added", TYPE(output_type), output_id);
-
- _eom_set_output_info_mode (output_info, output_mode);
- _eom_set_output_info_size (output_info, w, h);
- _eom_set_output_info_phy_size (output_info, w_mm, h_mm);
-
- _eom_mutex_unlock ();
- _eom_output_call_notify_cb (¬ify);
- _eom_mutex_lock ();
- }
- break;
-
- case EOM_OUTPUT_NOTIFY_REMOVE:
- {
- INFO ("'%s(%d)' removed", TYPE(output_type), output_id);
- _eom_reset_output_info (output_info);
-
- _eom_mutex_unlock ();
- _eom_output_call_notify_cb (¬ify);
- _eom_mutex_lock ();
- }
- break;
-
- case EOM_OUTPUT_NOTIFY_MODE_CHANGED:
- {
- eom_output_mode_e old_mode;
-
- old_mode = output_info->output_mode;
- output_info->output_mode = output_mode;
-
- INFO ("'%s(%d)' mode changed(%d=>%d)",
- TYPE(output_type), output_id, old_mode, output_info->output_mode);
-
- notify.mode_change.old_mode = old_mode;
- notify.mode_change.new_mode = output_info->output_mode;
-
- _eom_mutex_unlock ();
- _eom_output_call_notify_cb (¬ify);
- _eom_mutex_lock ();
- }
- break;
-
- case EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED:
- {
- int current_pid = getpid();
-
- if (current_pid == pid)
- {
- INFO ("'%s(%d)'pid(%d)", TYPE(output_type), output_id, pid);
- _eom_set_output_attribute(output_info, attr);
- _eom_set_output_attribute_state(output_info, state);
- notify.attr_change.output_id = output_id;
- notify.attr_change.attribute = attr;
- notify.attr_change.attr_state = state;
-
- _eom_mutex_unlock ();
- _eom_output_call_notify_cb (¬ify);
- _eom_mutex_lock ();
- }
- }
- break;
-
- default:
- INFO ("'unknown(%d)' notified", notify.base.type);
-
- _eom_mutex_unlock ();
- _eom_output_call_notify_cb (¬ify);
- _eom_mutex_lock ();
- break;
- }
+ eom_output_notify_s notify;
+ eom_output_info *output_info;
+ int notify_type, output_id, output_type, output_mode, w, h, w_mm, h_mm, pid, attr, state;
+ GValue *v;
+
+ RET_IF_FAIL(array != NULL);
+ RET_IF_FAIL(array->n_values == 11);
+
+ /* 11 args 0: notify_type 1:output_id, 2:output_type, 3:output_mode, 4:w, 5:h, 6:w_mm, 7:h_mm, 8:pid, 9:attri, 10:state */
+ v = g_value_array_get_nth(array, 0);
+ notify_type = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 1);
+ output_id = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 2);
+ output_type = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 3);
+ output_mode = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 4);
+ w = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 5);
+ h = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 6);
+ w_mm = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 7);
+ h_mm = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 8);
+ pid = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 9);
+ attr = g_value_get_int(v);
+ v = g_value_array_get_nth(array, 10);
+ state = g_value_get_int(v);
+
+ INFO("notify: %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
+ notify_type, output_id, output_type, output_mode, w, h, w_mm, h_mm, pid, attr, state);
+
+ memset(¬ify, 0, sizeof(eom_output_notify_s));
+ notify.base.type = notify_type;
+ notify.base.output_id = output_id;
+
+ _eom_mutex_lock();
+
+ output_info = _eom_find_output_info(output_id);
+ GOTO_IF_FAIL(output_info != NULL, exit);
+
+ switch (notify_type) {
+ case EOM_OUTPUT_NOTIFY_ADD:
+ {
+ INFO("'%s(%d)' added", TYPE(output_type), output_id);
+
+ _eom_set_output_info_mode(output_info, output_mode);
+ _eom_set_output_info_size(output_info, w, h);
+ _eom_set_output_info_phy_size(output_info, w_mm, h_mm);
+
+ _eom_mutex_unlock();
+ _eom_output_call_notify_cb(¬ify);
+ _eom_mutex_lock();
+ }
+ break;
+
+ case EOM_OUTPUT_NOTIFY_REMOVE:
+ {
+ INFO("'%s(%d)' removed", TYPE(output_type), output_id);
+
+ _eom_reset_output_info(output_info);
+
+ _eom_mutex_unlock();
+ _eom_output_call_notify_cb(¬ify);
+ _eom_mutex_lock();
+ }
+ break;
+
+ case EOM_OUTPUT_NOTIFY_MODE_CHANGED:
+ {
+ eom_output_mode_e old_mode;
+
+ old_mode = output_info->output_mode;
+ output_info->output_mode = output_mode;
+
+ INFO("'%s(%d)' mode changed(%d=>%d)",
+ TYPE(output_type), output_id, old_mode, output_info->output_mode);
+
+ notify.mode_change.old_mode = old_mode;
+ notify.mode_change.new_mode = output_info->output_mode;
+
+ _eom_mutex_unlock();
+ _eom_output_call_notify_cb(¬ify);
+ _eom_mutex_lock();
+ }
+ break;
+
+ case EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED:
+ {
+ int current_pid = getpid();
+
+ if (current_pid == pid) {
+ INFO("'%s(%d)'pid(%d)", TYPE(output_type), output_id, pid);
+ _eom_set_output_attribute(output_info, attr);
+ _eom_set_output_attribute_state(output_info, state);
+ notify.attr_change.output_id = output_id;
+ notify.attr_change.attribute = attr;
+ notify.attr_change.attr_state = state;
+
+ _eom_mutex_unlock();
+ _eom_output_call_notify_cb(¬ify);
+ _eom_mutex_lock();
+ }
+ }
+ break;
+
+ default:
+ INFO("'unknown(%d)' notified", notify.base.type);
+
+ _eom_mutex_unlock();
+ _eom_output_call_notify_cb(¬ify);
+ _eom_mutex_lock();
+ break;
+ }
exit:
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
}
static eom_output_info*
-_eom_find_output_info (eom_output_id output_id)
+_eom_find_output_info(eom_output_id output_id)
{
- GList *l;
+ GList *l;
- for (l = output_info_list; l; l = g_list_next (l))
- {
- eom_output_info *output_info = (eom_output_info*)l->data;
+ for (l = output_info_list; l; l = g_list_next(l)) {
+ eom_output_info *output_info = (eom_output_info *)l->data;
- if (output_info && (output_id == output_info->id))
- return output_info;
- }
+ if (output_info && (output_id == output_info->id))
+ return output_info;
+ }
- return NULL;
+ return NULL;
}
static void
-_eom_free_output_info (eom_output_info **output_info)
+_eom_free_output_info(eom_output_info **output_info)
{
- if (output_info && *output_info)
- {
- free(*output_info);
- *output_info = NULL;
- }
+ if (output_info && *output_info) {
+ free(*output_info);
+ *output_info = NULL;
+ }
}
static eom_output_info*
-_eom_alloc_output_info (int output_id, int output_type)
+_eom_alloc_output_info(int output_id, int output_type)
{
- eom_output_info *output_info = NULL;
+ eom_output_info *output_info = NULL;
- output_info = calloc (1, sizeof (eom_output_info));
- GOTO_IF_FAIL (output_info != NULL, fail);
+ output_info = calloc(1, sizeof(eom_output_info));
+ GOTO_IF_FAIL(output_info != NULL, fail);
- output_info->id = output_id;
- output_info->type = output_type;
- output_info->output_mode = EOM_OUTPUT_MODE_NONE;
- output_info->attribute = EOM_OUTPUT_ATTRIBUTE_NONE;
- output_info->state = EOM_OUTPUT_ATTRIBUTE_STATE_NONE;
- output_info->width = 0;
- output_info->height = 0;
- output_info->mm_width = 0;
- output_info->mm_height = 0;
+ output_info->id = output_id;
+ output_info->type = output_type;
+ output_info->output_mode = EOM_OUTPUT_MODE_NONE;
+ output_info->attribute = EOM_OUTPUT_ATTRIBUTE_NONE;
+ output_info->state = EOM_OUTPUT_ATTRIBUTE_STATE_NONE;
+ output_info->width = 0;
+ output_info->height = 0;
+ output_info->mm_width = 0;
+ output_info->mm_height = 0;
- INFO ("alloc '%s(%d)''s info", TYPE (output_type), output_id);
+ INFO("alloc '%s(%d)''s info", TYPE(output_type), output_id);
- return output_info;
+ return output_info;
fail:
- if (output_info)
- free (output_info);
+ if (output_info)
+ free(output_info);
- ERR ("fail: alloc '%s(%d)''s info", TYPE (output_type), output_id);
+ ERR("fail: alloc '%s(%d)''s info", TYPE(output_type), output_id);
- return NULL;
+ return NULL;
}
API int
-eom_init (void)
+eom_init(void)
{
- bool ret;
+ bool ret;
- _eom_get_debug_evn ();
+ _eom_get_debug_evn();
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- g_type_init ();
+ g_type_init();
- ret = _eom_dbus_init ();
+ ret = _eom_dbus_init();
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- INFO ("eom init %s", (ret)?"success":"failed");
+ INFO("eom init %s", (ret) ? "success" : "failed");
- return (ret)?EOM_ERROR_NONE:EOM_ERROR_CONNECTION_FAILURE;
+ return (ret) ? EOM_ERROR_NONE : EOM_ERROR_CONNECTION_FAILURE;
}
API void
-eom_deinit (void)
+eom_deinit(void)
{
- GList *l;
+ GList *l;
- _eom_mutex_lock ();
- _eom_dbus_deinit ();
+ _eom_mutex_lock();
+ _eom_dbus_deinit();
- // TODO: redesign the life-cycle of output_infos
- //destory output_info.
- for (l = output_info_list; l; l = g_list_next (l))
- {
- eom_output_info *output_info = (eom_output_info*)l->data;
- output_info_list = g_list_remove (output_info_list, output_info);
+ /* TODO: redesign the life-cycle of output_infos */
+ /* destory output_info. */
+ for (l = output_info_list; l; l = g_list_next(l)) {
+ eom_output_info *output_info = (eom_output_info *)l->data;
+ output_info_list = g_list_remove(output_info_list, output_info);
- _eom_free_output_info(&output_info);
- }
+ _eom_free_output_info(&output_info);
+ }
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- INFO ("eom deinit");
+ INFO("eom deinit");
}
API eom_output_id*
-eom_get_eom_output_ids (int *count)
+eom_get_eom_output_ids(int *count)
{
- GValueArray *ret_array = NULL;
- eom_output_id *output_ids = NULL;
- int i;
-
- if (!count)
- {
- set_last_result (EOM_ERROR_INVALID_PARAMETER);
- return NULL;
- }
-
- _eom_mutex_lock ();
-
- ret_array = eom_dbus_client_send_message ("GetOutputIDs", NULL);
-
- if (!ret_array)
- {
- *count = 0;
- _eom_mutex_unlock ();
- set_last_result (EOM_ERROR_NONE);
- return NULL;
- }
-
- if (ret_array->n_values == 0)
- {
- g_value_array_free (ret_array);
- *count = 0;
- _eom_mutex_unlock ();
- set_last_result (EOM_ERROR_NONE);
- return NULL;
- }
-
- output_ids = calloc (ret_array->n_values, sizeof (eom_output_id));
- GOTO_IF_FAIL (output_ids != NULL, fail);
-
- *count = ret_array->n_values;
- for (i = 0; i < ret_array->n_values; i++)
- {
- GValue *v = g_value_array_get_nth (ret_array, i);
- output_ids[i] = g_value_get_int (v);
- INFO ("output_ids: %d", output_ids[i]);
- }
-
- g_value_array_free (ret_array);
- ret_array = NULL;
-
- // TODO: redesign the life-cycle of output_infos
- for (i = 0; i < *count; i++)
- {
- /* add output_info to output_info_list */
- eom_output_info *output_info;
- eom_output_id output_id = output_ids[i];
- GValueArray *msg_array;
- GValue v = G_VALUE_INIT;
-
- output_info = _eom_find_output_info (output_id);
- if (output_info)
- continue;
-
- msg_array = g_value_array_new (0);
-
- g_value_init (&v, G_TYPE_INT);
- g_value_set_int (&v, output_id);
- msg_array = g_value_array_append (msg_array, &v);
-
- ret_array = eom_dbus_client_send_message("GetOutputInfo", msg_array);
- g_value_array_free (msg_array);
-
- if (ret_array)
- {
- /* 0:output_id, 1:output_type, 2:output_mode, 3:w, 4:h, 5:w_mm, 6:h_mm */
- output_info = _eom_alloc_output_info (g_value_get_int(g_value_array_get_nth (ret_array, 0)),
- g_value_get_int(g_value_array_get_nth (ret_array, 1)));
- if (output_info)
- {
- output_info_list = g_list_append (output_info_list, output_info);
- _eom_set_output_info_mode (output_info, g_value_get_int(g_value_array_get_nth (ret_array, 2)));
- _eom_set_output_info_size (output_info, g_value_get_int(g_value_array_get_nth (ret_array, 3)),
- g_value_get_int(g_value_array_get_nth (ret_array, 4)));
- _eom_set_output_info_phy_size (output_info, g_value_get_int(g_value_array_get_nth (ret_array, 5)),
- g_value_get_int(g_value_array_get_nth (ret_array, 6)));
- INFO ("GetOutputInfo: %s(%d)", TYPE (output_info->type), output_info->id);
- }
-
- g_value_array_free (ret_array);
- ret_array = NULL;
- }
- else
- ERR ("fail: get id(%d)'s information", output_id);
- }
-
- _eom_mutex_unlock ();
-
- set_last_result (EOM_ERROR_NONE);
-
- return output_ids;
+ GValueArray *ret_array = NULL;
+ eom_output_id *output_ids = NULL;
+ int i;
+
+ if (!count) {
+ set_last_result(EOM_ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ _eom_mutex_lock();
+
+ ret_array = eom_dbus_client_send_message("GetOutputIDs", NULL);
+
+ if (!ret_array) {
+ *count = 0;
+ _eom_mutex_unlock();
+ set_last_result(EOM_ERROR_NONE);
+ return NULL;
+ }
+
+ if (ret_array->n_values == 0) {
+ g_value_array_free(ret_array);
+ *count = 0;
+ _eom_mutex_unlock();
+ set_last_result(EOM_ERROR_NONE);
+ return NULL;
+ }
+
+ output_ids = calloc(ret_array->n_values, sizeof(eom_output_id));
+ GOTO_IF_FAIL(output_ids != NULL, fail);
+
+ *count = ret_array->n_values;
+ for (i = 0; i < ret_array->n_values; i++) {
+ GValue *v = g_value_array_get_nth(ret_array, i);
+ output_ids[i] = g_value_get_int(v);
+ INFO("output_ids: %d", output_ids[i]);
+ }
+
+ g_value_array_free(ret_array);
+ ret_array = NULL;
+
+ /* TODO: redesign the life-cycle of output_infos */
+ for (i = 0; i < *count; i++) {
+ /* add output_info to output_info_list */
+ eom_output_info *output_info;
+ eom_output_id output_id = output_ids[i];
+ GValueArray *msg_array;
+ GValue v = G_VALUE_INIT;
+
+ output_info = _eom_find_output_info(output_id);
+ if (output_info)
+ continue;
+
+ msg_array = g_value_array_new(0);
+
+ g_value_init(&v, G_TYPE_INT);
+ g_value_set_int(&v, output_id);
+ msg_array = g_value_array_append(msg_array, &v);
+
+ ret_array = eom_dbus_client_send_message("GetOutputInfo", msg_array);
+ g_value_array_free(msg_array);
+
+ if (ret_array) {
+ /* 0:output_id, 1:output_type, 2:output_mode, 3:w, 4:h, 5:w_mm, 6:h_mm */
+ output_info = _eom_alloc_output_info(g_value_get_int(g_value_array_get_nth(ret_array, 0)),
+ g_value_get_int(g_value_array_get_nth(ret_array, 1)));
+ if (output_info) {
+ output_info_list = g_list_append(output_info_list, output_info);
+ _eom_set_output_info_mode(output_info, g_value_get_int(g_value_array_get_nth(ret_array, 2)));
+ _eom_set_output_info_size(output_info, g_value_get_int(g_value_array_get_nth(ret_array, 3)),
+ g_value_get_int(g_value_array_get_nth(ret_array, 4)));
+ _eom_set_output_info_phy_size(output_info, g_value_get_int(g_value_array_get_nth(ret_array, 5)),
+ g_value_get_int(g_value_array_get_nth(ret_array, 6)));
+ INFO("GetOutputInfo: %s(%d)", TYPE(output_info->type), output_info->id);
+ }
+
+ g_value_array_free(ret_array);
+ ret_array = NULL;
+ } else
+ ERR("fail: get id(%d)'s information", output_id);
+ }
+
+ _eom_mutex_unlock();
+
+ set_last_result(EOM_ERROR_NONE);
+
+ return output_ids;
fail:
- if (ret_array)
- g_value_array_free (ret_array);
+ if (ret_array)
+ g_value_array_free(ret_array);
- if (output_ids)
- free (output_ids);
+ if (output_ids)
+ free(output_ids);
- *count = 0;
+ *count = 0;
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- set_last_result (EOM_ERROR_OUT_OF_MEMORY);
+ set_last_result(EOM_ERROR_OUT_OF_MEMORY);
- return NULL;
+ return NULL;
}
API int
-eom_set_output_added_cb (eom_output_added_cb callback, void *user_data)
+eom_set_output_added_cb(eom_output_added_cb callback, void *user_data)
{
- eom_output_notify_cb_info *cb_info;
- GList *l;
+ eom_output_notify_cb_info *cb_info;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (cb_info && (cb_info->add_func != NULL) && (cb_info->add_func == callback))
- {
- _eom_mutex_unlock ();
- return EOM_ERROR_NONE;
- }
- }
+ if (cb_info && (cb_info->add_func != NULL) && (cb_info->add_func == callback)) {
+ _eom_mutex_unlock();
+ return EOM_ERROR_NONE;
+ }
+ }
- cb_info = calloc (1, sizeof (eom_output_notify_cb_info));
- GOTO_IF_FAIL (cb_info != NULL, fail);
+ cb_info = calloc(1, sizeof(eom_output_notify_cb_info));
+ GOTO_IF_FAIL(cb_info != NULL, fail);
- cb_info->type = EOM_OUTPUT_NOTIFY_ADD;
- cb_info->add_func = callback;
- cb_info->user_data = user_data;
+ cb_info->type = EOM_OUTPUT_NOTIFY_ADD;
+ cb_info->add_func = callback;
+ cb_info->user_data = user_data;
- cb_info_list = g_list_append (cb_info_list, cb_info);
+ cb_info_list = g_list_append(cb_info_list, cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
+ return EOM_ERROR_NONE;
fail:
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_OUT_OF_MEMORY;
+ return EOM_ERROR_OUT_OF_MEMORY;
}
API int
-eom_unset_output_added_cb (eom_output_added_cb callback)
+eom_unset_output_added_cb(eom_output_added_cb callback)
{
- GList *l;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (!cb_info || (cb_info->add_func == NULL) || (cb_info->add_func != callback))
- continue;
+ if (!cb_info || (cb_info->add_func == NULL) || (cb_info->add_func != callback))
+ continue;
- cb_info_list = g_list_remove (cb_info_list, cb_info);
- free (cb_info);
+ cb_info_list = g_list_remove(cb_info_list, cb_info);
+ free(cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
- }
+ return EOM_ERROR_NONE;
+ }
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_INVALID_PARAMETER;
+ return EOM_ERROR_INVALID_PARAMETER;
}
API int
-eom_set_output_removed_cb (eom_output_removed_cb callback, void *user_data)
+eom_set_output_removed_cb(eom_output_removed_cb callback, void *user_data)
{
- eom_output_notify_cb_info *cb_info;
- GList *l;
+ eom_output_notify_cb_info *cb_info;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (cb_info && (cb_info->remove_func != NULL) && (cb_info->remove_func == callback))
- {
- _eom_mutex_unlock ();
- return EOM_ERROR_NONE;
- }
- }
+ if (cb_info && (cb_info->remove_func != NULL) && (cb_info->remove_func == callback)) {
+ _eom_mutex_unlock();
+ return EOM_ERROR_NONE;
+ }
+ }
- cb_info = calloc (1, sizeof (eom_output_notify_cb_info));
- GOTO_IF_FAIL (cb_info != NULL, fail);
+ cb_info = calloc(1, sizeof(eom_output_notify_cb_info));
+ GOTO_IF_FAIL(cb_info != NULL, fail);
- cb_info->type = EOM_OUTPUT_NOTIFY_REMOVE;
- cb_info->remove_func = callback;
- cb_info->user_data = user_data;
+ cb_info->type = EOM_OUTPUT_NOTIFY_REMOVE;
+ cb_info->remove_func = callback;
+ cb_info->user_data = user_data;
- cb_info_list = g_list_append (cb_info_list, cb_info);
+ cb_info_list = g_list_append(cb_info_list, cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
+ return EOM_ERROR_NONE;
fail:
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_OUT_OF_MEMORY;
+ return EOM_ERROR_OUT_OF_MEMORY;
}
API int
-eom_unset_output_removed_cb (eom_output_removed_cb callback)
+eom_unset_output_removed_cb(eom_output_removed_cb callback)
{
- GList *l;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (!cb_info || (cb_info->remove_func == NULL) || (cb_info->remove_func != callback))
- continue;
+ if (!cb_info || (cb_info->remove_func == NULL) || (cb_info->remove_func != callback))
+ continue;
- cb_info_list = g_list_remove (cb_info_list, cb_info);
- free (cb_info);
+ cb_info_list = g_list_remove(cb_info_list, cb_info);
+ free(cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
- }
+ return EOM_ERROR_NONE;
+ }
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_INVALID_PARAMETER;
+ return EOM_ERROR_INVALID_PARAMETER;
}
API int
-eom_set_mode_changed_cb (eom_mode_changed_cb callback, void *user_data)
+eom_set_mode_changed_cb(eom_mode_changed_cb callback, void *user_data)
{
- eom_output_notify_cb_info *cb_info;
- GList *l;
+ eom_output_notify_cb_info *cb_info;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (cb_info && (cb_info->mode_change_func != NULL) && (cb_info->mode_change_func == callback))
- {
- _eom_mutex_unlock ();
- return EOM_ERROR_NONE;
- }
- }
+ if (cb_info && (cb_info->mode_change_func != NULL) && (cb_info->mode_change_func == callback)) {
+ _eom_mutex_unlock();
+ return EOM_ERROR_NONE;
+ }
+ }
- cb_info = calloc (1, sizeof (eom_output_notify_cb_info));
- GOTO_IF_FAIL (cb_info != NULL, fail);
+ cb_info = calloc(1, sizeof(eom_output_notify_cb_info));
+ GOTO_IF_FAIL(cb_info != NULL, fail);
- cb_info->type = EOM_OUTPUT_NOTIFY_MODE_CHANGED;
- cb_info->mode_change_func = callback;
- cb_info->user_data = user_data;
+ cb_info->type = EOM_OUTPUT_NOTIFY_MODE_CHANGED;
+ cb_info->mode_change_func = callback;
+ cb_info->user_data = user_data;
- cb_info_list = g_list_append (cb_info_list, cb_info);
+ cb_info_list = g_list_append(cb_info_list, cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
+ return EOM_ERROR_NONE;
fail:
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_OUT_OF_MEMORY;
+ return EOM_ERROR_OUT_OF_MEMORY;
}
API int
-eom_unset_mode_changed_cb (eom_mode_changed_cb callback)
+eom_unset_mode_changed_cb(eom_mode_changed_cb callback)
{
- GList *l;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (!cb_info || (cb_info->mode_change_func == NULL) || (cb_info->mode_change_func != callback))
- continue;
+ if (!cb_info || (cb_info->mode_change_func == NULL) || (cb_info->mode_change_func != callback))
+ continue;
- cb_info_list = g_list_remove (cb_info_list, cb_info);
- free (cb_info);
+ cb_info_list = g_list_remove(cb_info_list, cb_info);
+ free(cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
- }
+ return EOM_ERROR_NONE;
+ }
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_INVALID_PARAMETER;
+ return EOM_ERROR_INVALID_PARAMETER;
}
API int
-eom_set_attribute_changed_cb (eom_attribute_changed_cb callback, void *user_data)
+eom_set_attribute_changed_cb(eom_attribute_changed_cb callback, void *user_data)
{
- eom_output_notify_cb_info *cb_info;
- GList *l;
+ eom_output_notify_cb_info *cb_info;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (cb_info && (cb_info->attribute_change_func != NULL) && (cb_info->attribute_change_func == callback))
- {
- _eom_mutex_unlock ();
- return EOM_ERROR_NONE;
- }
- }
+ if (cb_info && (cb_info->attribute_change_func != NULL) && (cb_info->attribute_change_func == callback)) {
+ _eom_mutex_unlock();
+ return EOM_ERROR_NONE;
+ }
+ }
- cb_info = calloc (1, sizeof (eom_output_notify_cb_info));
- GOTO_IF_FAIL (cb_info != NULL, fail);
+ cb_info = calloc(1, sizeof(eom_output_notify_cb_info));
+ GOTO_IF_FAIL(cb_info != NULL, fail);
- cb_info->type = EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED;
- cb_info->attribute_change_func = callback;
- cb_info->user_data = user_data;
+ cb_info->type = EOM_OUTPUT_NOTIFY_ATTRIBUTE_CHANGED;
+ cb_info->attribute_change_func = callback;
+ cb_info->user_data = user_data;
- cb_info_list = g_list_append (cb_info_list, cb_info);
+ cb_info_list = g_list_append(cb_info_list, cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
+ return EOM_ERROR_NONE;
fail:
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_OUT_OF_MEMORY;
+ return EOM_ERROR_OUT_OF_MEMORY;
}
API int
-eom_unset_attribute_changed_cb (eom_attribute_changed_cb callback)
+eom_unset_attribute_changed_cb(eom_attribute_changed_cb callback)
{
- GList *l;
+ GList *l;
- RETV_IF_FAIL (callback != NULL, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(callback != NULL, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- for (l = cb_info_list; l; l = g_list_next (l))
- {
- eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info*)l->data;
+ for (l = cb_info_list; l; l = g_list_next(l)) {
+ eom_output_notify_cb_info *cb_info = (eom_output_notify_cb_info *)l->data;
- if (!cb_info || (cb_info->attribute_change_func == NULL) || (cb_info->attribute_change_func != callback))
- continue;
+ if (!cb_info || (cb_info->attribute_change_func == NULL) || (cb_info->attribute_change_func != callback))
+ continue;
- cb_info_list = g_list_remove (cb_info_list, cb_info);
- free (cb_info);
+ cb_info_list = g_list_remove(cb_info_list, cb_info);
+ free(cb_info);
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
- }
+ return EOM_ERROR_NONE;
+ }
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_INVALID_PARAMETER;
+ return EOM_ERROR_INVALID_PARAMETER;
}
API int
-eom_set_output_attribute (eom_output_id output_id, eom_output_attribute_e attr)
+eom_set_output_attribute(eom_output_id output_id, eom_output_attribute_e attr)
{
- eom_output_info *output_info = NULL;
- bool ret = false;
- GValueArray *msg_array;
- GValueArray *ret_array;
- GValue v = G_VALUE_INIT;
- int pid = 0;
+ eom_output_info *output_info = NULL;
+ bool ret = false;
+ GValueArray *msg_array;
+ GValueArray *ret_array;
+ GValue v = G_VALUE_INIT;
+ int pid = 0;
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- RETV_IF_FAIL (attr > EOM_OUTPUT_ATTRIBUTE_NONE, EOM_ERROR_INVALID_PARAMETER);
- RETV_IF_FAIL (attr < EOM_OUTPUT_ATTRIBUTE_MAX, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(attr > EOM_OUTPUT_ATTRIBUTE_NONE, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(attr < EOM_OUTPUT_ATTRIBUTE_MAX, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- _eom_mutex_unlock ();
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ _eom_mutex_unlock();
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
- pid = getpid();
+ pid = getpid();
- INFO ("output_id: %d, pid: %d, mode: %d\n", output_id, pid, attr);
+ INFO("output_id: %d, pid: %d, mode: %d\n", output_id, pid, attr);
- msg_array = g_value_array_new (0);
+ msg_array = g_value_array_new(0);
- /* 0:output_id, 1:pid, 2:eom_attribuete_e */
- g_value_init (&v, G_TYPE_INT);
- g_value_set_int (&v, output_id);
- msg_array = g_value_array_append (msg_array, &v);
- g_value_set_int (&v, pid);
- msg_array = g_value_array_append (msg_array, &v);
- g_value_set_int (&v, attr);
- msg_array = g_value_array_append (msg_array, &v);
+ /* 0:output_id, 1:pid, 2:eom_attribuete_e */
+ g_value_init(&v, G_TYPE_INT);
+ g_value_set_int(&v, output_id);
+ msg_array = g_value_array_append(msg_array, &v);
+ g_value_set_int(&v, pid);
+ msg_array = g_value_array_append(msg_array, &v);
+ g_value_set_int(&v, attr);
+ msg_array = g_value_array_append(msg_array, &v);
- ret_array = eom_dbus_client_send_message ("SetOutputAttribute", msg_array);
- g_value_array_free (msg_array);
- if (!ret_array)
- {
- _eom_mutex_unlock ();
- return EOM_ERROR_MESSAGE_SENDING_FAILURE;
- }
+ ret_array = eom_dbus_client_send_message("SetOutputAttribute", msg_array);
+ g_value_array_free(msg_array);
+ if (!ret_array) {
+ _eom_mutex_unlock();
+ return EOM_ERROR_MESSAGE_SENDING_FAILURE;
+ }
- ret = g_value_get_int (g_value_array_get_nth (ret_array, 0));
+ ret = g_value_get_int (g_value_array_get_nth(ret_array, 0));
- g_value_array_free (ret_array);
+ g_value_array_free(ret_array);
- INFO ("SetOutputAttribute: %s", (ret)?"success":"failed");
+ INFO("SetOutputAttribute: %s", (ret) ? "success" : "failed");
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return (ret)?EOM_ERROR_NONE:EOM_ERROR_MESSAGE_OPERATION_FAILURE;
+ return (ret) ? EOM_ERROR_NONE : EOM_ERROR_MESSAGE_OPERATION_FAILURE;
}
API int
-eom_get_output_type (eom_output_id output_id, eom_output_type_e *type)
+eom_get_output_type(eom_output_id output_id, eom_output_type_e *type)
{
- eom_output_info *output_info = NULL;
+ eom_output_info *output_info = NULL;
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- *type = EOM_OUTPUT_TYPE_UNKNOWN;
- _eom_mutex_unlock ();
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
- *type = output_info->type;
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ *type = EOM_OUTPUT_TYPE_UNKNOWN;
+ _eom_mutex_unlock();
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
+ *type = output_info->type;
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- set_last_result (EOM_ERROR_NONE);
- return EOM_ERROR_NONE;
+ set_last_result(EOM_ERROR_NONE);
+ return EOM_ERROR_NONE;
}
API int
-eom_get_output_mode (eom_output_id output_id, eom_output_mode_e *mode)
+eom_get_output_mode(eom_output_id output_id, eom_output_mode_e *mode)
{
- eom_output_info *output_info = NULL;
+ eom_output_info *output_info = NULL;
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- *mode = EOM_OUTPUT_MODE_NONE;
- _eom_mutex_unlock ();
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
- *mode = output_info->output_mode;
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ *mode = EOM_OUTPUT_MODE_NONE;
+ _eom_mutex_unlock();
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
+ *mode = output_info->output_mode;
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- set_last_result (EOM_ERROR_NONE);
- return EOM_ERROR_NONE;
+ set_last_result(EOM_ERROR_NONE);
+ return EOM_ERROR_NONE;
}
API int
-eom_get_output_attribute (eom_output_id output_id, eom_output_attribute_e *attribute)
+eom_get_output_attribute(eom_output_id output_id, eom_output_attribute_e *attribute)
{
- eom_output_info *output_info = NULL;
+ eom_output_info *output_info = NULL;
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- *attribute = EOM_OUTPUT_ATTRIBUTE_NONE;
- _eom_mutex_unlock ();
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
- *attribute = output_info->attribute;
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ *attribute = EOM_OUTPUT_ATTRIBUTE_NONE;
+ _eom_mutex_unlock();
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
+ *attribute = output_info->attribute;
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- set_last_result (EOM_ERROR_NONE);
- return EOM_ERROR_NONE;
+ set_last_result(EOM_ERROR_NONE);
+ return EOM_ERROR_NONE;
}
API int
-eom_get_output_attribute_state (eom_output_id output_id, eom_output_attribute_state_e *state)
+eom_get_output_attribute_state(eom_output_id output_id, eom_output_attribute_state_e *state)
{
- eom_output_info *output_info = NULL;
+ eom_output_info *output_info = NULL;
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- *state = EOM_OUTPUT_ATTRIBUTE_STATE_NONE;
- _eom_mutex_unlock ();
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
- *state = output_info->state;
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ *state = EOM_OUTPUT_ATTRIBUTE_STATE_NONE;
+ _eom_mutex_unlock();
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
+ *state = output_info->state;
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- set_last_result (EOM_ERROR_NONE);
- return EOM_ERROR_NONE;
+ set_last_result(EOM_ERROR_NONE);
+ return EOM_ERROR_NONE;
}
API int
-eom_get_output_resolution (eom_output_id output_id, int *width, int *height)
+eom_get_output_resolution(eom_output_id output_id, int *width, int *height)
{
- eom_output_info *output_info = NULL;
+ eom_output_info *output_info = NULL;
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- if (width)
- *width = 0;
- if (height)
- *height = 0;
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ if (width)
+ *width = 0;
+ if (height)
+ *height = 0;
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- _eom_mutex_unlock ();
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ _eom_mutex_unlock();
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
- if (width)
- *width = output_info->width;
- if (height)
- *height = output_info->height;
+ if (width)
+ *width = output_info->width;
+ if (height)
+ *height = output_info->height;
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
+ return EOM_ERROR_NONE;
}
API int
-eom_get_output_physical_size (eom_output_id output_id, int *phy_width, int *phy_height)
+eom_get_output_physical_size(eom_output_id output_id, int *phy_width, int *phy_height)
{
- eom_output_info *output_info = NULL;
+ eom_output_info *output_info = NULL;
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- _eom_mutex_lock ();
+ _eom_mutex_lock();
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- if (phy_width)
- *phy_width = 0;
- if (phy_height)
- *phy_height = 0;
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ if (phy_width)
+ *phy_width = 0;
+ if (phy_height)
+ *phy_height = 0;
- _eom_mutex_unlock ();
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
+ _eom_mutex_unlock();
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
- if (phy_width)
- *phy_width = output_info->mm_width;
- if (phy_height)
- *phy_height = output_info->mm_height;
+ if (phy_width)
+ *phy_width = output_info->mm_width;
+ if (phy_height)
+ *phy_height = output_info->mm_height;
- _eom_mutex_unlock ();
+ _eom_mutex_unlock();
- return EOM_ERROR_NONE;
+ return EOM_ERROR_NONE;
}
API int
-eom_set_output_window (eom_output_id output_id, Evas_Object *win)
+eom_set_output_window(eom_output_id output_id, Evas_Object *win)
{
#ifdef HAVE_X11
- eom_output_info *output_info = NULL;
- bool ret = false;
- GValueArray *msg_array;
- GValueArray *ret_array;
- GValue v = G_VALUE_INIT;
- Ecore_X_Window xwin;
- int pid = 0;
-
- RETV_IF_FAIL (output_id != 0, EOM_ERROR_INVALID_PARAMETER);
- RETV_IF_FAIL (win != NULL, EOM_ERROR_INVALID_PARAMETER);
-
- _eom_mutex_lock ();
-
- output_info = _eom_find_output_info (output_id);
- if (!output_info)
- {
- set_last_result (EOM_ERROR_NO_SUCH_DEVICE);
- _eom_mutex_unlock ();
- return EOM_ERROR_NO_SUCH_DEVICE;
- }
-
- pid = getpid();
- xwin = elm_win_xwindow_get (win);
-
- INFO ("output_id: %d, pid: %d, xwin: %d\n", output_id, pid, xwin);
-
- msg_array = g_value_array_new (0);
-
- /* 0:output_id, 1:pid, 2:eom_attribuete_e */
- g_value_init (&v, G_TYPE_INT);
- g_value_set_int (&v, output_id);
- msg_array = g_value_array_append (msg_array, &v);
- g_value_set_int (&v, pid);
- msg_array = g_value_array_append (msg_array, &v);
- g_value_set_int (&v, xwin);
- msg_array = g_value_array_append (msg_array, &v);
-
- ret_array = eom_dbus_client_send_message ("SetWindow", msg_array);
- g_value_array_free (msg_array);
- if (!ret_array)
- {
- _eom_mutex_unlock ();
- return EOM_ERROR_MESSAGE_SENDING_FAILURE;
- }
-
- ret = g_value_get_int (g_value_array_get_nth (ret_array, 0));
-
- g_value_array_free (ret_array);
-
- if (ret == 1)
- {
- const char *profile = "desktop";
- elm_win_profiles_set(win, &profile, 1);
- elm_win_fullscreen_set (win, EINA_TRUE);
- INFO ("SetWindow: success\n");
- _eom_mutex_unlock ();
- return EOM_ERROR_NONE;
- }
-
- INFO ("SetWindow: failed\n");
- _eom_mutex_unlock ();
- return EOM_ERROR_MESSAGE_OPERATION_FAILURE;
+ eom_output_info *output_info = NULL;
+ bool ret = false;
+ GValueArray *msg_array;
+ GValueArray *ret_array;
+ GValue v = G_VALUE_INIT;
+ Ecore_X_Window xwin;
+ int pid = 0;
+
+ RETV_IF_FAIL(output_id != 0, EOM_ERROR_INVALID_PARAMETER);
+ RETV_IF_FAIL(win != NULL, EOM_ERROR_INVALID_PARAMETER);
+
+ _eom_mutex_lock();
+
+ output_info = _eom_find_output_info(output_id);
+ if (!output_info) {
+ set_last_result(EOM_ERROR_NO_SUCH_DEVICE);
+ _eom_mutex_unlock();
+ return EOM_ERROR_NO_SUCH_DEVICE;
+ }
+
+ pid = getpid();
+ xwin = elm_win_xwindow_get(win);
+
+ INFO("output_id: %d, pid: %d, xwin: %d\n", output_id, pid, xwin);
+
+ msg_array = g_value_array_new(0);
+
+ /* 0:output_id, 1:pid, 2:eom_attribuete_e */
+ g_value_init(&v, G_TYPE_INT);
+ g_value_set_int(&v, output_id);
+ msg_array = g_value_array_append(msg_array, &v);
+ g_value_set_int(&v, pid);
+ msg_array = g_value_array_append(msg_array, &v);
+ g_value_set_int(&v, xwin);
+ msg_array = g_value_array_append(msg_array, &v);
+
+ ret_array = eom_dbus_client_send_message("SetWindow", msg_array);
+ g_value_array_free(msg_array);
+ if (!ret_array) {
+ _eom_mutex_unlock();
+ return EOM_ERROR_MESSAGE_SENDING_FAILURE;
+ }
+
+ ret = g_value_get_int(g_value_array_get_nth(ret_array, 0));
+
+ g_value_array_free(ret_array);
+
+ if (ret == 1) {
+ const char *profile = "desktop";
+ elm_win_profiles_set(win, &profile, 1);
+ elm_win_fullscreen_set(win, EINA_TRUE);
+ INFO("SetWindow: success\n");
+ _eom_mutex_unlock();
+ return EOM_ERROR_NONE;
+ }
+
+ INFO("SetWindow: failed\n");
+ _eom_mutex_unlock();
+ return EOM_ERROR_MESSAGE_OPERATION_FAILURE;
#else
- return EOM_ERROR_NONE;
+ return EOM_ERROR_NONE;
#endif
}