diff options
Diffstat (limited to 'src/music-player-bridge.c')
-rw-r--r-- | src/music-player-bridge.c | 509 |
1 files changed, 295 insertions, 214 deletions
diff --git a/src/music-player-bridge.c b/src/music-player-bridge.c index e397913..04c2a3e 100644 --- a/src/music-player-bridge.c +++ b/src/music-player-bridge.c @@ -1,4 +1,4 @@ -/* music-player-bridge.c generated by valac 0.11.2, the Vala compiler +/* music-player-bridge.c generated by valac 0.11.3, the Vala compiler * generated from music-player-bridge.vala, do not modify */ /* @@ -77,6 +77,27 @@ typedef struct _Mpris2WatcherClass Mpris2WatcherClass; #define _g_free0(var) (var = (g_free (var), NULL)) #define PLAYER_CONTROLLER_TYPE_STATE (player_controller_state_get_type ()) +typedef struct _PlayerControllerPrivate PlayerControllerPrivate; + +#define TYPE_PLAYER_ITEM (player_item_get_type ()) +#define PLAYER_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYER_ITEM, PlayerItem)) +#define PLAYER_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYER_ITEM, PlayerItemClass)) +#define IS_PLAYER_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYER_ITEM)) +#define IS_PLAYER_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYER_ITEM)) +#define PLAYER_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYER_ITEM, PlayerItemClass)) + +typedef struct _PlayerItem PlayerItem; +typedef struct _PlayerItemClass PlayerItemClass; + +#define TYPE_MPRIS2_CONTROLLER (mpris2_controller_get_type ()) +#define MPRIS2_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MPRIS2_CONTROLLER, Mpris2Controller)) +#define MPRIS2_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MPRIS2_CONTROLLER, Mpris2ControllerClass)) +#define IS_MPRIS2_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MPRIS2_CONTROLLER)) +#define IS_MPRIS2_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MPRIS2_CONTROLLER)) +#define MPRIS2_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MPRIS2_CONTROLLER, Mpris2ControllerClass)) + +typedef struct _Mpris2Controller Mpris2Controller; +typedef struct _Mpris2ControllerClass Mpris2ControllerClass; #define _g_key_file_free0(var) ((var == NULL) ? NULL : (var = (g_key_file_free (var), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) @@ -94,7 +115,6 @@ struct _MusicPlayerBridgePrivate { DbusmenuMenuitem* root_menu; GeeHashMap* registered_clients; Mpris2Watcher* watcher; - GSettings* settings; }; typedef enum { @@ -105,6 +125,19 @@ typedef enum { PLAYER_CONTROLLER_STATE_DISCONNECTED } PlayerControllerstate; +struct _PlayerController { + GObject parent_instance; + PlayerControllerPrivate * priv; + gint current_state; + GeeArrayList* custom_items; + Mpris2Controller* mpris_bridge; + gboolean* use_playlists; +}; + +struct _PlayerControllerClass { + GObjectClass parent_class; +}; + static gpointer music_player_bridge_parent_class = NULL; @@ -116,22 +149,26 @@ GType mpris2_watcher_get_type (void) G_GNUC_CONST; enum { MUSIC_PLAYER_BRIDGE_DUMMY_PROPERTY }; -#define MUSIC_PLAYER_BRIDGE_DESKTOP_PREFIX "/usr/share/applications/" MusicPlayerBridge* music_player_bridge_new (void); MusicPlayerBridge* music_player_bridge_construct (GType object_type); static void music_player_bridge_on_blacklist_update (MusicPlayerBridge* self, gchar** blacklist, int blacklist_length1); static void music_player_bridge_try_to_add_inactive_familiar_clients (MusicPlayerBridge* self); -gchar** settings_manager_fetch_interested (SettingsManager* self, int* result_length1); -static GAppInfo* music_player_bridge_create_app_info (const gchar* path); -static gchar* music_player_bridge_determine_key (gchar* path); -static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop_path); +GeeArrayList* settings_manager_fetch_interested (SettingsManager* self); +static GAppInfo* music_player_bridge_create_app_info (const gchar* desktop); +static gchar* music_player_bridge_determine_key (gchar* desktop_or_interface); +static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop); static gint music_player_bridge_calculate_menu_position (MusicPlayerBridge* self); GType player_controller_state_get_type (void) G_GNUC_CONST; -PlayerController* player_controller_new (DbusmenuMenuitem* root, GAppInfo* app, const gchar* dbus_name, const gchar* icon_name, gint offset, PlayerControllerstate initial_state); -PlayerController* player_controller_construct (GType object_type, DbusmenuMenuitem* root, GAppInfo* app, const gchar* dbus_name, const gchar* icon_name, gint offset, PlayerControllerstate initial_state); -#define PLAYER_CONTROLLER_WIDGET_QUANTITY 4 -void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, const gchar* desktop, const gchar* dbus_name); -gboolean settings_manager_add_interested (SettingsManager* self, const gchar* app_desktop_name); +PlayerController* player_controller_new (DbusmenuMenuitem* root, GAppInfo* app, const gchar* dbus_name, const gchar* icon_name, gint offset, gboolean* use_playlists, PlayerControllerstate initial_state); +PlayerController* player_controller_construct (GType object_type, DbusmenuMenuitem* root, GAppInfo* app, const gchar* dbus_name, const gchar* icon_name, gint offset, gboolean* use_playlists, PlayerControllerstate initial_state); +#define PLAYER_CONTROLLER_WIDGET_QUANTITY 5 +void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, const gchar* desktop, const gchar* dbus_name, gboolean use_playlists); +gchar** settings_manager_fetch_blacklist (SettingsManager* self, int* result_length1); +static gboolean _vala_string_array_contains (gchar** stack, int stack_length, gchar* needle); +void settings_manager_add_interested (SettingsManager* self, const gchar* app_desktop_name); +GType player_item_get_type (void) G_GNUC_CONST; +GType mpris2_controller_get_type (void) G_GNUC_CONST; +static gboolean* _bool_dup (gboolean* self); void player_controller_update_state (PlayerController* self, PlayerControllerstate new_state); void player_controller_activate (PlayerController* self, const gchar* dbus_name); void music_player_bridge_client_has_vanished (MusicPlayerBridge* self, const gchar* mpris_root_interface); @@ -139,7 +176,7 @@ void player_controller_hibernate (PlayerController* self); void music_player_bridge_set_root_menu_item (MusicPlayerBridge* self, DbusmenuMenuitem* menu); Mpris2Watcher* mpris2_watcher_new (void); Mpris2Watcher* mpris2_watcher_construct (GType object_type); -static void _music_player_bridge_client_has_become_available_mpris2_watcher_client_appeared (Mpris2Watcher* _sender, const gchar* desktop_file_name, const gchar* dbus_name, gpointer self); +static void _music_player_bridge_client_has_become_available_mpris2_watcher_client_appeared (Mpris2Watcher* _sender, const gchar* desktop_file_name, const gchar* dbus_name, gboolean use_playlists, gpointer self); static void _music_player_bridge_client_has_vanished_mpris2_watcher_client_disappeared (Mpris2Watcher* _sender, const gchar* dbus_name, gpointer self); static GObject * music_player_bridge_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); SettingsManager* settings_manager_new (void); @@ -165,75 +202,73 @@ MusicPlayerBridge* music_player_bridge_new (void) { static void music_player_bridge_on_blacklist_update (MusicPlayerBridge* self, gchar** blacklist, int blacklist_length1) { g_return_if_fail (self != NULL); - g_debug ("music-player-bridge.vala:45: some blacklist update"); + g_debug ("music-player-bridge.vala:43: some blacklist update"); } static void music_player_bridge_try_to_add_inactive_familiar_clients (MusicPlayerBridge* self) { - gint _tmp0_; - gchar** _tmp1_ = NULL; g_return_if_fail (self != NULL); - _tmp1_ = settings_manager_fetch_interested (self->priv->settings_manager, &_tmp0_); { - gchar** desktop_collection; - int desktop_collection_length1; - int desktop_it; - desktop_collection = _tmp1_; - desktop_collection_length1 = _tmp0_; - for (desktop_it = 0; desktop_it < _tmp0_; desktop_it = desktop_it + 1) { - gchar* _tmp2_; + GeeArrayList* _tmp0_ = NULL; + GeeArrayList* _desktop_list; + gint _tmp1_; + gint _desktop_size; + gint _desktop_index; + _tmp0_ = settings_manager_fetch_interested (self->priv->settings_manager); + _desktop_list = _tmp0_; + _tmp1_ = gee_collection_get_size ((GeeCollection*) _desktop_list); + _desktop_size = _tmp1_; + _desktop_index = -1; + while (TRUE) { + gpointer _tmp2_ = NULL; gchar* desktop; - _tmp2_ = g_strdup (desktop_collection[desktop_it]); - desktop = _tmp2_; - { - gchar* _tmp3_ = NULL; - gchar* _tmp4_; - gchar* _tmp5_ = NULL; - gchar* _tmp6_; - gchar* path; - GAppInfo* _tmp7_ = NULL; - GAppInfo* app_info; - gchar* _tmp8_; - gchar* _tmp9_ = NULL; - gchar* mpris_key; - gchar* _tmp10_ = NULL; - gchar* _tmp11_; - gint _tmp12_; - PlayerController* _tmp13_ = NULL; - PlayerController* _tmp14_; - PlayerController* ctrl; - g_debug ("music-player-bridge.vala:51: interested client found : %s", desktop); - _tmp3_ = g_strconcat (desktop, ".desktop", NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_strconcat (MUSIC_PLAYER_BRIDGE_DESKTOP_PREFIX, _tmp4_, NULL); - path = (_tmp6_ = _tmp5_, _g_free0 (_tmp4_), _tmp6_); - _tmp7_ = music_player_bridge_create_app_info (path); - app_info = _tmp7_; - if (app_info == NULL) { - g_warning ("music-player-bridge.vala:55: Could not create app_info for path %s \n" \ -" Getting out of here ", path); - _g_object_unref0 (app_info); - _g_free0 (path); - _g_free0 (desktop); - continue; - } - _tmp8_ = g_strdup (path); - _tmp9_ = music_player_bridge_determine_key (_tmp8_); - mpris_key = _tmp9_; - _tmp10_ = music_player_bridge_fetch_icon_name (path); - _tmp11_ = _tmp10_; - _tmp12_ = music_player_bridge_calculate_menu_position (self); - _tmp13_ = player_controller_new (self->priv->root_menu, app_info, NULL, _tmp11_, _tmp12_, PLAYER_CONTROLLER_STATE_OFFLINE); - ctrl = (_tmp14_ = _tmp13_, _g_free0 (_tmp11_), _tmp14_); - gee_abstract_map_set ((GeeAbstractMap*) self->priv->registered_clients, mpris_key, ctrl); - _g_object_unref0 (ctrl); - _g_free0 (mpris_key); + gchar* _tmp3_ = NULL; + gchar* _tmp4_; + GAppInfo* _tmp5_ = NULL; + GAppInfo* _tmp6_; + GAppInfo* app_info; + gchar* _tmp7_; + gchar* _tmp8_ = NULL; + gchar* mpris_key; + gchar* _tmp9_ = NULL; + gchar* _tmp10_; + gint _tmp11_; + PlayerController* _tmp12_ = NULL; + PlayerController* _tmp13_; + PlayerController* ctrl; + _desktop_index = _desktop_index + 1; + if (!(_desktop_index < _desktop_size)) { + break; + } + _tmp2_ = gee_abstract_list_get ((GeeAbstractList*) _desktop_list, _desktop_index); + desktop = (gchar*) _tmp2_; + g_debug ("music-player-bridge.vala:49: interested client found : %s", desktop); + _tmp3_ = g_strconcat (desktop, ".desktop", NULL); + _tmp4_ = _tmp3_; + _tmp5_ = music_player_bridge_create_app_info (_tmp4_); + app_info = (_tmp6_ = _tmp5_, _g_free0 (_tmp4_), _tmp6_); + if (app_info == NULL) { + g_warning ("music-player-bridge.vala:52: Could not create app_info for path %s \n" \ +" Getting out of here ", desktop); _g_object_unref0 (app_info); - _g_free0 (path); _g_free0 (desktop); + continue; } + _tmp7_ = g_strdup (desktop); + _tmp8_ = music_player_bridge_determine_key (_tmp7_); + mpris_key = _tmp8_; + _tmp9_ = music_player_bridge_fetch_icon_name (desktop); + _tmp10_ = _tmp9_; + _tmp11_ = music_player_bridge_calculate_menu_position (self); + _tmp12_ = player_controller_new (self->priv->root_menu, app_info, NULL, _tmp10_, _tmp11_, NULL, PLAYER_CONTROLLER_STATE_OFFLINE); + ctrl = (_tmp13_ = _tmp12_, _g_free0 (_tmp10_), _tmp13_); + gee_abstract_map_set ((GeeAbstractMap*) self->priv->registered_clients, mpris_key, ctrl); + _g_object_unref0 (ctrl); + _g_free0 (mpris_key); + _g_object_unref0 (app_info); + _g_free0 (desktop); } - desktop_collection = (_vala_array_free (desktop_collection, desktop_collection_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (_desktop_list); } } @@ -255,19 +290,46 @@ static gint music_player_bridge_calculate_menu_position (MusicPlayerBridge* self } -void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, const gchar* desktop, const gchar* dbus_name) { +static gboolean _vala_string_array_contains (gchar** stack, int stack_length, gchar* needle) { + int i; + for (i = 0; i < stack_length; i++) { + if (g_strcmp0 (stack[i], needle) == 0) { + return TRUE; + } + } + return FALSE; +} + + +static gboolean* _bool_dup (gboolean* self) { + gboolean* dup; + dup = g_new0 (gboolean, 1); + memcpy (dup, self, sizeof (gboolean)); + return dup; +} + + +static gpointer __bool_dup0 (gpointer self) { + return self ? _bool_dup (self) : NULL; +} + + +void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, const gchar* desktop, const gchar* dbus_name, gboolean use_playlists) { gboolean _tmp0_ = FALSE; - gchar* _tmp1_ = NULL; - gchar* _tmp2_; - gchar* _tmp3_ = NULL; - gchar* _tmp4_; - gchar* path; - GAppInfo* _tmp5_ = NULL; - GAppInfo* app_info; + gint _tmp1_; + gchar** _tmp2_ = NULL; + gchar** _tmp3_; + gint _tmp3__length1; + gboolean _tmp4_; + gchar* _tmp5_ = NULL; gchar* _tmp6_; - gchar* _tmp7_ = NULL; + GAppInfo* _tmp7_ = NULL; + GAppInfo* _tmp8_; + GAppInfo* app_info; + gchar* _tmp9_; + gchar* _tmp10_ = NULL; gchar* mpris_key; - gboolean _tmp8_; + gboolean _tmp11_; g_return_if_fail (self != NULL); g_return_if_fail (desktop != NULL); g_return_if_fail (dbus_name != NULL); @@ -277,91 +339,114 @@ void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, c _tmp0_ = g_strcmp0 (desktop, "") == 0; } if (_tmp0_) { - g_warning ("music-player-bridge.vala:82: Client %s attempting to register without " \ + g_warning ("music-player-bridge.vala:83: Client %s attempting to register without " \ "desktop entry being set on the mpris root", dbus_name); return; } - g_debug ("music-player-bridge.vala:86: client_has_become_available %s", desktop); - _tmp1_ = g_strconcat (desktop, ".desktop", NULL); - _tmp2_ = _tmp1_; - _tmp3_ = g_strconcat (MUSIC_PLAYER_BRIDGE_DESKTOP_PREFIX, _tmp2_, NULL); - path = (_tmp4_ = _tmp3_, _g_free0 (_tmp2_), _tmp4_); - _tmp5_ = music_player_bridge_create_app_info (path); - app_info = _tmp5_; + _tmp2_ = settings_manager_fetch_blacklist (self->priv->settings_manager, &_tmp1_); + _tmp3_ = _tmp2_; + _tmp3__length1 = _tmp1_; + if ((_tmp4_ = _vala_string_array_contains (_tmp3_, _tmp1_, desktop), _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL), _tmp4_)) { + g_debug ("music-player-bridge.vala:88: Client %s attempting to register but I'm " \ +"afraid it is blacklisted", desktop); + return; + } + g_debug ("music-player-bridge.vala:93: client_has_become_available %s", desktop); + _tmp5_ = g_strconcat (desktop, ".desktop", NULL); + _tmp6_ = _tmp5_; + _tmp7_ = music_player_bridge_create_app_info (_tmp6_); + app_info = (_tmp8_ = _tmp7_, _g_free0 (_tmp6_), _tmp8_); if (app_info == NULL) { - g_warning ("music-player-bridge.vala:90: Could not create app_info for path %s \n" \ -" Getting out of here ", path); + g_warning ("music-player-bridge.vala:96: Could not create app_info for path %s \n" \ +" Getting out of here ", desktop); _g_object_unref0 (app_info); - _g_free0 (path); return; } - _tmp6_ = g_strdup (path); - _tmp7_ = music_player_bridge_determine_key (_tmp6_); - mpris_key = _tmp7_; - _tmp8_ = gee_abstract_map_has_key ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); - if (_tmp8_ == FALSE) { - gchar* _tmp9_ = NULL; - gchar* _tmp10_; - gint _tmp11_; - PlayerController* _tmp12_ = NULL; - PlayerController* _tmp13_; + _tmp9_ = g_strdup (desktop); + _tmp10_ = music_player_bridge_determine_key (_tmp9_); + mpris_key = _tmp10_; + _tmp11_ = gee_abstract_map_has_key ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); + if (_tmp11_ == FALSE) { + gchar* _tmp12_ = NULL; + gchar* _tmp13_; + gint _tmp14_; + PlayerController* _tmp15_ = NULL; + PlayerController* _tmp16_; PlayerController* ctrl; - g_debug ("music-player-bridge.vala:97: New client has registered that we have no" \ -"t seen before: %s", dbus_name); - _tmp9_ = music_player_bridge_fetch_icon_name (path); - _tmp10_ = _tmp9_; - _tmp11_ = music_player_bridge_calculate_menu_position (self); - _tmp12_ = player_controller_new (self->priv->root_menu, app_info, dbus_name, _tmp10_, _tmp11_, PLAYER_CONTROLLER_STATE_READY); - ctrl = (_tmp13_ = _tmp12_, _g_free0 (_tmp10_), _tmp13_); + g_debug ("music-player-bridge.vala:104: New client has registered that we have n" \ +"ot seen before: %s", dbus_name); + _tmp12_ = music_player_bridge_fetch_icon_name (desktop); + _tmp13_ = _tmp12_; + _tmp14_ = music_player_bridge_calculate_menu_position (self); + _tmp15_ = player_controller_new (self->priv->root_menu, app_info, dbus_name, _tmp13_, _tmp14_, &use_playlists, PLAYER_CONTROLLER_STATE_READY); + ctrl = (_tmp16_ = _tmp15_, _g_free0 (_tmp13_), _tmp16_); gee_abstract_map_set ((GeeAbstractMap*) self->priv->registered_clients, mpris_key, ctrl); - g_debug ("music-player-bridge.vala:105: Have not seen this %s before, new contro" \ + g_debug ("music-player-bridge.vala:113: Have not seen this %s before, new contro" \ "ller created.", desktop); settings_manager_add_interested (self->priv->settings_manager, desktop); - g_debug ("music-player-bridge.vala:107: application added to the interested list"); + g_debug ("music-player-bridge.vala:115: application added to the interested list"); _g_object_unref0 (ctrl); } else { - gpointer _tmp14_ = NULL; - PlayerController* _tmp15_; - gpointer _tmp16_ = NULL; - PlayerController* _tmp17_; - _tmp14_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); - _tmp15_ = (PlayerController*) _tmp14_; - player_controller_update_state (_tmp15_, PLAYER_CONTROLLER_STATE_READY); - _g_object_unref0 (_tmp15_); - _tmp16_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); - _tmp17_ = (PlayerController*) _tmp16_; - player_controller_activate (_tmp17_, dbus_name); - _g_object_unref0 (_tmp17_); - g_debug ("music-player-bridge.vala:112: Application has already registered - awa" \ + gpointer _tmp17_ = NULL; + PlayerController* _tmp18_; + gboolean* _tmp19_; + gboolean* _tmp20_; + gpointer _tmp21_ = NULL; + PlayerController* _tmp22_; + gpointer _tmp23_ = NULL; + PlayerController* _tmp24_; + _tmp17_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); + _tmp18_ = (PlayerController*) _tmp17_; + _tmp19_ = __bool_dup0 (&use_playlists); + _tmp20_ = _tmp19_; + _g_free0 (_tmp18_->use_playlists); + _tmp18_->use_playlists = _tmp20_; + _g_object_unref0 (_tmp18_); + _tmp21_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); + _tmp22_ = (PlayerController*) _tmp21_; + player_controller_update_state (_tmp22_, PLAYER_CONTROLLER_STATE_READY); + _g_object_unref0 (_tmp22_); + _tmp23_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); + _tmp24_ = (PlayerController*) _tmp23_; + player_controller_activate (_tmp24_, dbus_name); + _g_object_unref0 (_tmp24_); + g_debug ("music-player-bridge.vala:121: Application has already registered - awa" \ "ken the hibernation: %s \n", dbus_name); } _g_free0 (mpris_key); _g_object_unref0 (app_info); - _g_free0 (path); } void music_player_bridge_client_has_vanished (MusicPlayerBridge* self, const gchar* mpris_root_interface) { g_return_if_fail (self != NULL); g_return_if_fail (mpris_root_interface != NULL); - g_debug ("music-player-bridge.vala:118: MusicPlayerBridge -> on_server_removed w" \ -"ith value %s", mpris_root_interface); + g_debug ("music-player-bridge.vala:127: MusicPlayerBridge -> client with dbus in" \ +"terface %s has vanished", mpris_root_interface); if (self->priv->root_menu != NULL) { gchar* _tmp0_; gchar* _tmp1_ = NULL; gchar* mpris_key; - g_debug ("music-player-bridge.vala:120: attempt to remove %s", mpris_root_interface); + gboolean _tmp2_ = FALSE; + g_debug ("music-player-bridge.vala:130: attempt to remove %s", mpris_root_interface); _tmp0_ = g_strdup (mpris_root_interface); _tmp1_ = music_player_bridge_determine_key (_tmp0_); mpris_key = _tmp1_; if (mpris_key != NULL) { - gpointer _tmp2_ = NULL; - PlayerController* _tmp3_; - _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); - _tmp3_ = (PlayerController*) _tmp2_; - player_controller_hibernate (_tmp3_); - _g_object_unref0 (_tmp3_); - g_debug ("music-player-bridge.vala:124: Successively offlined client %s", mpris_key); + gboolean _tmp3_; + _tmp3_ = gee_abstract_map_has_key ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); + _tmp2_ = _tmp3_; + } else { + _tmp2_ = FALSE; + } + if (_tmp2_) { + gpointer _tmp4_ = NULL; + PlayerController* _tmp5_; + _tmp4_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key); + _tmp5_ = (PlayerController*) _tmp4_; + player_controller_hibernate (_tmp5_); + _g_object_unref0 (_tmp5_); + g_debug ("music-player-bridge.vala:134: Successively offlined client %s", mpris_key); } _g_free0 (mpris_key); } @@ -373,8 +458,8 @@ static gpointer _g_object_ref0 (gpointer self) { } -static void _music_player_bridge_client_has_become_available_mpris2_watcher_client_appeared (Mpris2Watcher* _sender, const gchar* desktop_file_name, const gchar* dbus_name, gpointer self) { - music_player_bridge_client_has_become_available (self, desktop_file_name, dbus_name); +static void _music_player_bridge_client_has_become_available_mpris2_watcher_client_appeared (Mpris2Watcher* _sender, const gchar* desktop_file_name, const gchar* dbus_name, gboolean use_playlists, gpointer self) { + music_player_bridge_client_has_become_available (self, desktop_file_name, dbus_name, use_playlists); } @@ -394,17 +479,17 @@ void music_player_bridge_set_root_menu_item (MusicPlayerBridge* self, DbusmenuMe _tmp1_ = _tmp0_; _g_object_unref0 (self->priv->root_menu); self->priv->root_menu = _tmp1_; + music_player_bridge_try_to_add_inactive_familiar_clients (self); _tmp2_ = mpris2_watcher_new (); _tmp3_ = _tmp2_; _g_object_unref0 (self->priv->watcher); self->priv->watcher = _tmp3_; g_signal_connect_object (self->priv->watcher, "client-appeared", (GCallback) _music_player_bridge_client_has_become_available_mpris2_watcher_client_appeared, self, 0); g_signal_connect_object (self->priv->watcher, "client-disappeared", (GCallback) _music_player_bridge_client_has_vanished_mpris2_watcher_client_disappeared, self, 0); - music_player_bridge_try_to_add_inactive_familiar_clients (self); } -static GAppInfo* music_player_bridge_create_app_info (const gchar* path) { +static GAppInfo* music_player_bridge_create_app_info (const gchar* desktop) { GAppInfo* result = NULL; GDesktopAppInfo* _tmp0_ = NULL; GDesktopAppInfo* info; @@ -412,17 +497,17 @@ static GAppInfo* music_player_bridge_create_app_info (const gchar* path) { GDesktopAppInfo* _tmp2_; GAppInfo* _tmp3_; GAppInfo* app_info; - g_return_val_if_fail (path != NULL, NULL); - _tmp0_ = g_desktop_app_info_new_from_filename (path); + g_return_val_if_fail (desktop != NULL, NULL); + _tmp0_ = g_desktop_app_info_new (desktop); info = _tmp0_; - if (path == NULL) { + if (desktop == NULL) { _tmp1_ = TRUE; } else { _tmp1_ = info == NULL; } if (_tmp1_) { - g_warning ("music-player-bridge.vala:142: Could not create a desktopappinfo instan" \ -"ce from app: %s", path); + g_warning ("music-player-bridge.vala:153: Could not create a desktopappinfo instan" \ +"ce from app: %s", desktop); result = NULL; _g_object_unref0 (info); return result; @@ -435,17 +520,28 @@ static GAppInfo* music_player_bridge_create_app_info (const gchar* path) { } -static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop_path) { +static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop) { gchar* result = NULL; - GKeyFile* _tmp0_ = NULL; + gchar* _tmp0_ = NULL; + gchar* _tmp1_; + GDesktopAppInfo* _tmp2_ = NULL; + GDesktopAppInfo* _tmp3_; + GDesktopAppInfo* info; + GKeyFile* _tmp4_ = NULL; GKeyFile* desktop_keyfile; - gchar* _tmp1_ = NULL; - gchar* _tmp2_; + const gchar* _tmp5_ = NULL; + gchar* _tmp6_ = NULL; + gchar* _tmp7_; GError * _inner_error_ = NULL; - g_return_val_if_fail (desktop_path != NULL, NULL); - _tmp0_ = g_key_file_new (); - desktop_keyfile = _tmp0_; - g_key_file_load_from_file (desktop_keyfile, desktop_path, G_KEY_FILE_NONE, &_inner_error_); + g_return_val_if_fail (desktop != NULL, NULL); + _tmp0_ = g_strconcat (desktop, ".desktop", NULL); + _tmp1_ = _tmp0_; + _tmp2_ = g_desktop_app_info_new (_tmp1_); + info = (_tmp3_ = _tmp2_, _g_free0 (_tmp1_), _tmp3_); + _tmp4_ = g_key_file_new (); + desktop_keyfile = _tmp4_; + _tmp5_ = g_desktop_app_info_get_filename (info); + g_key_file_load_from_file (desktop_keyfile, _tmp5_, G_KEY_FILE_NONE, &_inner_error_); if (_inner_error_ != NULL) { if (_inner_error_->domain == G_FILE_ERROR) { goto __catch0_g_file_error; @@ -454,6 +550,7 @@ static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop_path) { goto __catch0_g_key_file_error; } _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; @@ -464,10 +561,11 @@ static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop_path) { GError * _error_; _error_ = _inner_error_; _inner_error_ = NULL; - g_warning ("music-player-bridge.vala:156: Error loading keyfile - FileError"); + g_warning ("music-player-bridge.vala:169: Error loading keyfile - FileError"); result = NULL; _g_error_free0 (_error_); _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); return result; } goto __finally0; @@ -476,32 +574,36 @@ static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop_path) { GError * _error_; _error_ = _inner_error_; _inner_error_ = NULL; - g_warning ("music-player-bridge.vala:160: Error loading keyfile - KeyFileError"); + g_warning ("music-player-bridge.vala:173: Error loading keyfile - KeyFileError"); result = NULL; _g_error_free0 (_error_); _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); return result; } __finally0: if (_inner_error_ != NULL) { _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } - _tmp1_ = g_key_file_get_string (desktop_keyfile, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, &_inner_error_); - _tmp2_ = _tmp1_; + _tmp6_ = g_key_file_get_string (desktop_keyfile, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, &_inner_error_); + _tmp7_ = _tmp6_; if (_inner_error_ != NULL) { if (_inner_error_->domain == G_KEY_FILE_ERROR) { goto __catch1_g_key_file_error; } _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } - result = _tmp2_; + result = _tmp7_; _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); return result; goto __finally1; __catch1_g_key_file_error: @@ -509,93 +611,73 @@ static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop_path) { GError * _error_; _error_ = _inner_error_; _inner_error_ = NULL; - g_warning ("music-player-bridge.vala:169: Error trying to fetch the icon name from" \ + g_warning ("music-player-bridge.vala:182: Error trying to fetch the icon name from" \ " the keyfile"); result = NULL; _g_error_free0 (_error_); _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); return result; } __finally1: _g_key_file_free0 (desktop_keyfile); + _g_object_unref0 (info); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } -static gchar* music_player_bridge_determine_key (gchar* path) { +static gchar* music_player_bridge_determine_key (gchar* desktop_or_interface) { gchar* result = NULL; - gchar** _tmp0_; - gchar** _tmp1_ = NULL; + gchar* _tmp0_; + gchar* _result_; + gchar** _tmp1_; + gchar** _tmp2_ = NULL; gint tokens_length1; gint _tokens_size_; - gchar** _tmp2_; + gchar** _tmp3_; gchar** tokens; - gchar* _tmp6_; - gchar* filename; - gchar** _tmp7_; - gchar** _tmp8_ = NULL; - gchar** _tmp9_; - gint _tmp9__length1; - gchar* _tmp10_; - gchar* _tmp11_; - gchar* _result_; - gchar** _tmp12_; - gchar** _tmp13_ = NULL; + gchar** _tmp6_; + gchar** _tmp7_ = NULL; gint temp_length1; gint _temp_size_; - gchar** _tmp14_; + gchar** _tmp8_; gchar** temp; - g_return_val_if_fail (path != NULL, NULL); - _tmp1_ = _tmp0_ = g_strsplit (path, "/", 0); - _tmp2_ = _tmp1_; - tokens_length1 = _vala_array_length (_tmp0_); + g_return_val_if_fail (desktop_or_interface != NULL, NULL); + _tmp0_ = g_strdup (desktop_or_interface); + _result_ = _tmp0_; + _tmp2_ = _tmp1_ = g_strsplit (desktop_or_interface, ".", 0); + _tmp3_ = _tmp2_; + tokens_length1 = _vala_array_length (_tmp1_); _tokens_size_ = tokens_length1; - tokens = _tmp2_; - if (tokens_length1 < 2) { - gchar** _tmp3_; - gchar** _tmp4_ = NULL; - gchar** _tmp5_; - _tmp4_ = _tmp3_ = g_strsplit (path, ".", 0); + tokens = _tmp3_; + if (tokens_length1 > 1) { + gchar* _tmp4_; + gchar* _tmp5_; + _tmp4_ = g_strdup (tokens[tokens_length1 - 1]); _tmp5_ = _tmp4_; - tokens = (_vala_array_free (tokens, tokens_length1, (GDestroyNotify) g_free), NULL); - tokens_length1 = _vala_array_length (_tmp3_); - _tokens_size_ = tokens_length1; - tokens = _tmp5_; - if (tokens_length1 < 2) { - result = NULL; - tokens = (_vala_array_free (tokens, tokens_length1, (GDestroyNotify) g_free), NULL); - _g_free0 (path); - return result; - } + _g_free0 (_result_); + _result_ = _tmp5_; } - _tmp6_ = g_strdup (tokens[tokens_length1 - 1]); - filename = _tmp6_; - _tmp8_ = _tmp7_ = g_strsplit (filename, ".", 0); - _tmp9_ = _tmp8_; - _tmp9__length1 = _vala_array_length (_tmp7_); - _tmp10_ = g_strdup (_tmp9_[0]); - _result_ = (_tmp11_ = _tmp10_, _tmp9_ = (_vala_array_free (_tmp9_, _tmp9__length1, (GDestroyNotify) g_free), NULL), _tmp11_); - _tmp13_ = _tmp12_ = g_strsplit (_result_, "-", 0); - _tmp14_ = _tmp13_; - temp_length1 = _vala_array_length (_tmp12_); + _tmp7_ = _tmp6_ = g_strsplit (_result_, "-", 0); + _tmp8_ = _tmp7_; + temp_length1 = _vala_array_length (_tmp6_); _temp_size_ = temp_length1; - temp = _tmp14_; + temp = _tmp8_; if (temp_length1 > 1) { - gchar* _tmp15_; - gchar* _tmp16_; - _tmp15_ = g_strdup (temp[0]); - _tmp16_ = _tmp15_; + gchar* _tmp9_; + gchar* _tmp10_; + _tmp9_ = g_strdup (temp[0]); + _tmp10_ = _tmp9_; _g_free0 (_result_); - _result_ = _tmp16_; + _result_ = _tmp10_; } - g_debug ("music-player-bridge.vala:197: determine key result = %s", _result_); + g_debug ("music-player-bridge.vala:205: determine key result = %s", _result_); result = _result_; temp = (_vala_array_free (temp, temp_length1, (GDestroyNotify) g_free), NULL); - _g_free0 (filename); tokens = (_vala_array_free (tokens, tokens_length1, (GDestroyNotify) g_free), NULL); - _g_free0 (path); + _g_free0 (desktop_or_interface); return result; } @@ -649,7 +731,6 @@ static void music_player_bridge_finalize (GObject* obj) { _g_object_unref0 (self->priv->root_menu); _g_object_unref0 (self->priv->registered_clients); _g_object_unref0 (self->priv->watcher); - _g_object_unref0 (self->priv->settings); G_OBJECT_CLASS (music_player_bridge_parent_class)->finalize (obj); } |