1 /* vim: set sw=4 ts=4 et: */
3 * This file is part of Live Wallpaper (livewp)
5 * Copyright (C) 2010 Vlad Vasiliev
6 * Copyright (C) 2010 Tanya Makova
9 * This software is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public License
11 * as published by the Free Software Foundation; either version 2.1 of
12 * the License, or (at your option) any later version.
14 * This software is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this software; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
25 /*******************************************************************************/
26 #include "livewp-common.h"
27 #include "livewp-dbus.h"
28 /*******************************************************************************/
30 livewp_initialize_dbus(Animation_WallpaperPrivate *priv){
35 // if(!priv->dbus_is_initialize){
36 dbus_error_init (&error);
37 /* Add D-BUS signal handler for 'status_changed' */
38 #if !defined APPLICATION
39 priv->dbus_conn = (DBusConnection *) osso_get_sys_dbus_connection(priv->osso);
40 priv->dbus_conn_session = (DBusConnection *) osso_get_dbus_connection(priv->osso);
42 priv->dbus_conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
43 priv->dbus_conn_session = dbus_bus_get(DBUS_BUS_SESSION, NULL);
46 if (priv->dbus_conn_session){
48 g_strdup_printf("type='signal', interface='%s'", LIVEWP_SIGNAL_INTERFACE);
49 dbus_bus_add_match(priv->dbus_conn_session, filter_string, &error);
50 if (dbus_error_is_set(&error)){
51 fprintf(stderr,"dbus_bus_add_match failed: %s", error.message);
52 dbus_error_free(&error);
54 g_free(filter_string);
55 /* add the callback */
56 dbus_connection_add_filter(priv->dbus_conn_session,
64 /*******************************************************************************/
66 livewp_deinitialize_dbus(Animation_WallpaperPrivate *priv){
72 #if defined APPLICATION
73 dbus_connection_close(priv->dbus_conn);
74 dbus_connection_unref(priv->dbus_conn);
77 if (priv->dbus_conn_session){
79 g_strdup_printf("type='signal', interface='%s'", LIVEWP_SIGNAL_INTERFACE);
81 dbus_error_init (&error);
82 dbus_bus_remove_match(priv->dbus_conn_session, filter_string, &error);
83 if (!dbus_error_is_set(&error)){
84 dbus_connection_remove_filter(priv->dbus_conn_session,
85 (DBusHandleMessageFunction)get_livewp_signal_cb,
89 fprintf(stderr,"dbus_bus_add_match failed: %s", error.message);
90 dbus_error_free(&error);
93 g_free(filter_string);
97 /*******************************************************************************/
99 send_dbus_signal (Animation_WallpaperPrivate *priv,
100 const gchar *interface,
106 DBusMessage *message = dbus_message_new (DBUS_MESSAGE_TYPE_SIGNAL);
107 dbus_message_set_interface (message, interface);
108 dbus_message_set_path (message, path);
109 dbus_message_set_member (message, member);
110 success = dbus_connection_send (priv->dbus_conn_session, message, NULL);
111 dbus_message_unref (message);
113 fprintf (stderr, "%s '%s' message.\n",
114 success ? "Sent" : "Failed to send",
119 /*******************************************************************************/
121 get_livewp_signal_cb(DBusConnection *conn, DBusMessage *msg, Animation_WallpaperPrivate *priv){
123 #ifdef DEBUGFUNCTIONCALL
127 #if defined APPLICATION
128 fprintf(stderr,"Application\n");
130 fprintf(stderr,"Plugin %p\n", priv);
133 if (dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_RELOAD_CONFIG)){
134 if(read_config(priv)){
135 fprintf(stderr, "\nCan not read config file.\n");
138 #if !(defined APPLICATION || defined CONTROLPANEL)
139 reload_scene(priv->desktop_plugin);
144 // if (dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_RELOAD_PLUGIN))
145 // reload_livewp_plugin();
147 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
149 /*******************************************************************************/