diff options
Diffstat (limited to 'src/sound-service.c')
-rw-r--r-- | src/sound-service.c | 49 |
1 files changed, 40 insertions, 9 deletions
diff --git a/src/sound-service.c b/src/sound-service.c index a368081..0170f81 100644 --- a/src/sound-service.c +++ b/src/sound-service.c @@ -17,19 +17,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <locale.h> + #include "sound-service.h" #include "pulseaudio-mgr.h" #include "sound-service-dbus.h" #include "music-player-bridge.h" -#include <locale.h> - static GMainLoop *mainloop = NULL; - -/**********************************************************************************************************************/ +static MusicPlayerBridge* player_bridge = NULL; +/***********************************************************************************************************/ // Init and exit functions /**********************************************************************************************************************/ - /** service_shutdown: When the service interface starts to shutdown, we @@ -55,6 +54,32 @@ get_greeter_mode (void) return (g_strcmp0(var, "1") == 0); } +void +on_player_specific_item_requested (SoundServiceDbus* sound_service, + const gchar* desktop_id, + const gchar* player_object_path, + gpointer userdata) +{ + if (player_bridge != NULL){ + music_player_bridge_enable_player_specific_items_for_client (player_bridge, + desktop_id, + player_object_path); + } +} + +void +on_track_specific_item_requested (SoundServiceDbus* sound_service, + const gchar* desktop_id, + const gchar* player_object_path, + gpointer userdata) +{ + if (player_bridge != NULL){ + music_player_bridge_enable_track_specific_items_for_client (player_bridge, + desktop_id, + player_object_path); + } +} + /** main: **/ @@ -68,20 +93,26 @@ main (int argc, char ** argv) bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); setlocale (LC_ALL, ""); - IndicatorService *service = indicator_service_new_version(INDICATOR_SOUND_DBUS_NAME, - INDICATOR_SOUND_DBUS_VERSION); + IndicatorService *service = indicator_service_new_version (INDICATOR_SOUND_DBUS_NAME, + INDICATOR_SOUND_DBUS_VERSION); g_signal_connect(G_OBJECT(service), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, G_CALLBACK(service_shutdown), NULL); SoundServiceDbus* sound_service = g_object_new(SOUND_SERVICE_DBUS_TYPE, NULL); + g_signal_connect(G_OBJECT(sound_service), + "track-specific-item-requested", + G_CALLBACK(on_track_specific_item_requested), NULL); + g_signal_connect(G_OBJECT(sound_service), + "player-specific-item-requested", + G_CALLBACK(on_player_specific_item_requested), NULL); greeter_mode = get_greeter_mode(); DbusmenuMenuitem* root_menuitem = sound_service_dbus_create_root_item(sound_service, greeter_mode); if (!greeter_mode) { - MusicPlayerBridge* server = music_player_bridge_new(); - music_player_bridge_set_root_menu_item(server, root_menuitem); + player_bridge = music_player_bridge_new(); + music_player_bridge_set_root_menu_item(player_bridge, root_menuitem); } // Run the loop |