From: Enlightenment S. <no-...@en...> - 2010-06-01 02:22:55
|
Log: fix to work with 'plugins' plugin Author: jeffdameth Date: 2010-05-31 19:22:48 -0700 (Mon, 31 May 2010) New Revision: 49366 Modified: trunk/E-MODULES-EXTRA/everything-mpris/src/e_mod_main.c Modified: trunk/E-MODULES-EXTRA/everything-mpris/src/e_mod_main.c =================================================================== --- trunk/E-MODULES-EXTRA/everything-mpris/src/e_mod_main.c 2010-06-01 02:01:01 UTC (rev 49365) +++ trunk/E-MODULES-EXTRA/everything-mpris/src/e_mod_main.c 2010-06-01 02:22:48 UTC (rev 49366) @@ -55,6 +55,8 @@ Track *empty; Ecore_Timer *update_timer; + + int instances; }; @@ -603,12 +605,15 @@ static Evry_Plugin * _begin(Evry_Plugin *plugin, const Evry_Item *item __UNUSED__) { - Plugin *p; - - EVRY_PLUGIN_INSTANCE(p, plugin); + if (!conn || !dbus_active) return NULL; - if (!conn || !dbus_active) return 0; + GET_PLUGIN(p, plugin); + p->instances++; + + if (p->instances > 1) + return EVRY_PLUGIN(p); + _dbus_send_msg("/TrackList", "GetLength", _dbus_cb_tracklist_length, p); _dbus_send_msg("/Player", "GetStatus", _dbus_cb_get_status, p); @@ -641,6 +646,13 @@ EVRY_PLUGIN_ITEMS_CLEAR(p); + IF_RELEASE(p->input); + + p->instances--; + + if (p->instances > 0) + return; + if (cb_tracklist_change) e_dbus_signal_handler_del(conn, cb_tracklist_change); if (cb_player_track_change) @@ -648,8 +660,6 @@ if (cb_player_status_change) e_dbus_signal_handler_del(conn, cb_player_status_change); - IF_RELEASE(p->input); - EINA_LIST_FREE(p->tracks, it) { if (it != EVRY_ITEM(p->empty)) @@ -660,8 +670,7 @@ if (p->update_timer) ecore_timer_del(p->update_timer); - - E_FREE(p); + p->update_timer = NULL; } static int |