banshee r3624 - in trunk/banshee: . libbanshee src/Extensions src/Extensions/Banshee.Daap



Author: abock
Date: Mon Mar 31 21:25:47 2008
New Revision: 3624
URL: http://svn.gnome.org/viewvc/banshee?rev=3624&view=rev

Log:
2008-03-31  Aaron Bockover  <abock gnome org>

    * libbanshee/banshee-player.c:
    * libbanshee/banshee-player.h:
    * libbanshee/banshee-player-missing-elements.c:
    * libbanshee/banshee-player-missing-elements.h: Moved code that handles
    missing plugins/plugin installation into a separate module



Added:
   trunk/banshee/libbanshee/banshee-player-missing-elements.c
   trunk/banshee/libbanshee/banshee-player-missing-elements.h
Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/libbanshee/Makefile.am
   trunk/banshee/libbanshee/banshee-player.c
   trunk/banshee/libbanshee/banshee-player.h
   trunk/banshee/libbanshee/libbanshee.mdp
   trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.mdp
   trunk/banshee/src/Extensions/Banshee.Daap/Makefile.am
   trunk/banshee/src/Extensions/Extensions.mds

Modified: trunk/banshee/libbanshee/Makefile.am
==============================================================================
--- trunk/banshee/libbanshee/Makefile.am	(original)
+++ trunk/banshee/libbanshee/Makefile.am	Mon Mar 31 21:25:47 2008
@@ -14,6 +14,7 @@
 libbanshee_la_SOURCES =  \
 	banshee-player.c \
 	banshee-player-cdda.c \
+	banshee-player-missing-elements.c \
 	gst-cd-rip-0.10.c \
 	gst-misc-0.10.c \
 	gst-transcode-0.10.c
@@ -21,6 +22,7 @@
 noinst_HEADERS =  \
 	banshee-player.h \
 	banshee-player-cdda.h \
+	banshee-player-missing-elements.h \
 	gst-cd-rip.h \
 	gst-misc.h \
 	gst-transcode.h

Added: trunk/banshee/libbanshee/banshee-player-missing-elements.c
==============================================================================
--- (empty file)
+++ trunk/banshee/libbanshee/banshee-player-missing-elements.c	Mon Mar 31 21:25:47 2008
@@ -0,0 +1,174 @@
+//
+// banshee-player-missing-elements.c
+//
+// Author:
+//   Aaron Bockover <abockover novell com>
+//
+// Copyright (C) 2005-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#include "banshee-player-missing-elements.h"
+
+// ---------------------------------------------------------------------------
+// Private Functions
+// ---------------------------------------------------------------------------
+
+static gchar **
+bp_slist_to_ptr_array (const GSList *elements)
+{
+    GPtrArray *vector = g_ptr_array_new ();
+    
+    while (elements != NULL) {
+        g_ptr_array_add (vector, g_strdup (elements->data));
+        elements = elements->next;
+    }
+    
+    g_ptr_array_add (vector, NULL);
+    return (gchar **)g_ptr_array_free (vector, FALSE);
+}
+
+static void
+bp_slist_destroy (GSList *list)
+{   
+    GSList *node = list;
+    
+    for (; node != NULL; node = node->next) {
+        g_free (node->data);
+    }
+    
+    g_slist_free (list);
+}
+
+#ifdef HAVE_GST_PBUTILS
+
+static void
+bp_missing_elements_handle_install_failed (BansheePlayer *player)
+{
+    g_return_if_fail (IS_BANSHEE_PLAYER (player));
+    
+    bp_slist_destroy (player->missing_element_details);
+    player->missing_element_details = NULL;
+    gst_element_set_state (player->playbin, GST_STATE_READY);
+    
+    if (player->error_cb != NULL) {
+        player->error_cb (player, GST_CORE_ERROR, GST_CORE_ERROR_MISSING_PLUGIN, NULL, NULL);
+    }
+}
+
+static void
+bp_missing_elements_handle_install_result (GstInstallPluginsReturn result, gpointer data)
+{
+    BansheePlayer *player = (BansheePlayer *)data;
+    
+    g_return_if_fail (IS_BANSHEE_PLAYER (player));
+    
+    // TODO: Actually handle a successful plugin installation
+    // if (result == GST_INSTALL_PLUGINS_SUCCESS) {
+    // }
+    
+    player->install_plugins_noprompt = TRUE;
+    
+    bp_missing_elements_handle_install_failed (player);
+    
+    gst_install_plugins_context_free (player->install_plugins_context);
+    player->install_plugins_context = NULL;
+}
+
+#endif
+
+// ---------------------------------------------------------------------------
+// Internal Functions
+// ---------------------------------------------------------------------------
+
+void _bp_missing_elements_destroy (BansheePlayer *player)
+{
+    g_return_if_fail (IS_BANSHEE_PLAYER (player));
+    
+    bp_slist_destroy (player->missing_element_details);
+    
+    #ifdef HAVE_GST_PBUTILS
+    if (player->install_plugins_context != NULL) {
+        gst_install_plugins_context_free (player->install_plugins_context);
+    }
+    #endif
+}
+
+void
+_bp_missing_elements_process_message (BansheePlayer *player, GstMessage *message)
+{
+    #ifdef HAVE_GST_PBUTILS
+    g_return_if_fail (IS_BANSHEE_PLAYER (player));
+    g_return_if_fail (message != NULL);
+    
+    if (gst_is_missing_plugin_message (message)) {
+        player->missing_element_details = g_slist_append (player->missing_element_details, 
+            gst_missing_plugin_message_get_installer_detail (message));
+    }
+    #endif
+}
+
+void
+_bp_missing_elements_handle_state_changed (BansheePlayer *player, GstState old, GstState new)
+{
+    #ifdef HAVE_GST_PBUTILS
+    GstInstallPluginsReturn install_return;
+    gchar **details;
+    
+    if (old != GST_STATE_READY || new != GST_STATE_PAUSED) {
+        return;
+    }
+    
+    g_return_if_fail (IS_BANSHEE_PLAYER (player));
+    
+    if (player->missing_element_details == NULL) {
+        return;
+    }
+    
+    g_return_if_fail (player->install_plugins_context != NULL);
+    
+    if (player->install_plugins_noprompt) {
+        bp_missing_elements_handle_install_failed (player);
+        return;
+    }
+    
+    details = bp_slist_to_ptr_array (player->missing_element_details);
+    player->install_plugins_context = gst_install_plugins_context_new ();
+    
+    #ifdef GDK_WINDOWING_X11
+    if (player->window != NULL) {
+        gst_install_plugins_context_set_xid (player->install_plugins_context, GDK_WINDOW_XWINDOW (player->window));
+    }
+    #endif
+    
+    install_return = gst_install_plugins_async (details, player->install_plugins_context, 
+        bp_missing_elements_handle_install_result, player);
+    
+    if (install_return != GST_INSTALL_PLUGINS_STARTED_OK) {
+        bp_missing_elements_handle_install_failed (player);
+        
+        gst_install_plugins_context_free (player->install_plugins_context);
+        player->install_plugins_context = NULL;
+    } 
+    
+    g_strfreev (details);
+    #endif
+}

Added: trunk/banshee/libbanshee/banshee-player-missing-elements.h
==============================================================================
--- (empty file)
+++ trunk/banshee/libbanshee/banshee-player-missing-elements.h	Mon Mar 31 21:25:47 2008
@@ -0,0 +1,38 @@
+//
+// banshee-player-missing-elements.h
+//
+// Author:
+//   Aaron Bockover <abockover novell com>
+//
+// Copyright (C) 2005-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#ifndef _BANSHEE_PLAYER_MISSING_ELEMENTS_H
+#define _BANSHEE_PLAYER_MISSING_ELEMENTS_H
+
+#include "banshee-player.h"
+
+void  _bp_missing_elements_destroy               (BansheePlayer *player);
+void  _bp_missing_elements_process_message       (BansheePlayer *player, GstMessage *message);
+void  _bp_missing_elements_handle_state_changed  (BansheePlayer *player, GstState old, GstState new);
+
+#endif /* _BANSHEE_PLAYER_MISSING_ELEMENTS_H */

Modified: trunk/banshee/libbanshee/banshee-player.c
==============================================================================
--- trunk/banshee/libbanshee/banshee-player.c	(original)
+++ trunk/banshee/libbanshee/banshee-player.c	Mon Mar 31 21:25:47 2008
@@ -27,10 +27,9 @@
  *  DEALINGS IN THE SOFTWARE.
  */
 
-#define _BANSHEE_PLAYER_C
- 
 #include "banshee-player.h"
 #include "banshee-player-cdda.h"
+#include "banshee-player-missing-elements.h"
 
 #ifdef GDK_WINDOWING_X11
 static gboolean bp_find_xoverlay (BansheePlayer *player);
@@ -54,20 +53,6 @@
     }
 }
 
-// private methods
-
-static void
-bp_nuke_slist(GSList *list)
-{   
-    GSList *node = list;
-    
-    for(; node != NULL; node = node->next) {
-        g_free(node->data);
-    }
-    
-    g_slist_free(list);
-}
-
 static void
 bp_destroy_pipeline(BansheePlayer *player)
 {
@@ -86,89 +71,6 @@
     player->playbin = NULL;
 }
 
-#ifdef HAVE_GST_PBUTILS
-static gchar **
-bp_missing_element_details_vectorize(const GSList *elements)
-{
-    GPtrArray *vector = g_ptr_array_new();
-    
-    while(elements != NULL) {
-        g_ptr_array_add(vector, g_strdup(elements->data));
-        elements = elements->next;
-    }
-    
-    g_ptr_array_add(vector, NULL);
-    return (gchar **)g_ptr_array_free(vector, FALSE);
-}
-
-static void
-bp_handle_missing_elements_failed(BansheePlayer *player)
-{
-    bp_nuke_slist(player->missing_element_details);
-    player->missing_element_details = NULL;
-    gst_element_set_state(player->playbin, GST_STATE_READY);
-    
-    if(player->error_cb != NULL) {
-       player->error_cb(player, GST_CORE_ERROR, GST_CORE_ERROR_MISSING_PLUGIN, NULL, NULL);
-    }
-}
-
-static void
-bp_handle_missing_elements_installer_result(GstInstallPluginsReturn result, gpointer data)
-{
-    BansheePlayer *player = (BansheePlayer *)data;
-    
-    g_return_if_fail(IS_BANSHEE_PLAYER(player));
-    
-    // TODO: Actually handle a successful plugin installation
-    // if(result == GST_INSTALL_PLUGINS_SUCCESS) {
-    // }
-    
-    player->install_plugins_noprompt = TRUE;
-    
-    bp_handle_missing_elements_failed(player);
-    
-    gst_install_plugins_context_free(player->install_plugins_context);
-    player->install_plugins_context = NULL;
-}
-
-static void
-bp_handle_missing_elements(BansheePlayer *player)
-{
-    GstInstallPluginsReturn install_return;
-    gchar **details;
-    
-    if(player->install_plugins_context != NULL) {
-        return;
-    } else if(player->install_plugins_noprompt) {
-        bp_handle_missing_elements_failed(player);
-        return;
-    }
-    
-    details = bp_missing_element_details_vectorize(player->missing_element_details);
-    player->install_plugins_context = gst_install_plugins_context_new();
-    
-    #ifdef GDK_WINDOWING_X11
-    if(player->window != NULL) {
-        gst_install_plugins_context_set_xid(player->install_plugins_context, 
-        GDK_WINDOW_XWINDOW(player->window));
-    }
-    #endif
-    
-    install_return = gst_install_plugins_async(details, player->install_plugins_context, 
-        bp_handle_missing_elements_installer_result, player);
-    
-    if(install_return != GST_INSTALL_PLUGINS_STARTED_OK) {
-        bp_handle_missing_elements_failed(player);
-        
-        gst_install_plugins_context_free(player->install_plugins_context);
-        player->install_plugins_context = NULL;
-    } 
-    
-    g_strfreev(details);
-}
-#endif
-
 static gboolean
 bp_bus_callback(GstBus *bus, GstMessage *message, gpointer data)
 {
@@ -200,39 +102,30 @@
             break;
         } 
         
-        #ifdef HAVE_GST_PBUTILS
         case GST_MESSAGE_ELEMENT: {
-            if(gst_is_missing_plugin_message(message)) {
-                player->missing_element_details = g_slist_append(player->missing_element_details, 
-                    gst_missing_plugin_message_get_installer_detail(message));
-            }
-            
+            _bp_missing_elements_process_message (player, message);
             break;
         }
-        #endif
         
-        case GST_MESSAGE_EOS:
+        case GST_MESSAGE_EOS: {
             if(player->eos_cb != NULL) {
                 player->eos_cb(player);
             }
             break;
+        }
+            
         case GST_MESSAGE_STATE_CHANGED: {
             GstState old, new, pending;
-            gst_message_parse_state_changed(message, &old, &new, &pending);
+            gst_message_parse_state_changed (message, &old, &new, &pending);
             
-            #ifdef HAVE_GST_PBUTILS
-            if(old == GST_STATE_READY && new == GST_STATE_PAUSED) {
-                if(player->missing_element_details != NULL) {
-                    bp_handle_missing_elements(player);
-                }
-            }
-            #endif
+            _bp_missing_elements_handle_state_changed (player, old, new);
             
-            if(player->state_changed_cb != NULL) {
-                player->state_changed_cb(player, old, new, pending);
+            if (player->state_changed_cb != NULL) {
+                player->state_changed_cb (player, old, new, pending);
             }
             break;
         }
+        
         case GST_MESSAGE_BUFFERING: {
             const GstStructure *buffering_struct;
             gint buffering_progress = 0;
@@ -476,35 +369,30 @@
 }
 
 void
-bp_free(BansheePlayer *player)
+bp_free (BansheePlayer *player)
 {
-    g_return_if_fail(IS_BANSHEE_PLAYER(player));
+    g_return_if_fail (IS_BANSHEE_PLAYER (player));
     
     g_mutex_free (player->mutex);
     
-    if(GST_IS_OBJECT(player->playbin)) {
+    if (GST_IS_OBJECT (player->playbin)) {
         player->target_state = GST_STATE_NULL;
-        gst_element_set_state(player->playbin, GST_STATE_NULL);
-        gst_object_unref(GST_OBJECT(player->playbin));
+        gst_element_set_state (player->playbin, GST_STATE_NULL);
+        gst_object_unref (GST_OBJECT (player->playbin));
     }
     
-    if(player->cdda_device != NULL) {
-        g_free(player->cdda_device);
-        player->cdda_device = NULL;
+    if (player->cdda_device != NULL) {
+        g_free (player->cdda_device);
     }
     
-    bp_nuke_slist(player->missing_element_details);
-    player->missing_element_details = NULL;
-    
-    #ifdef HAVE_GST_PBUTILS
-    if(player->install_plugins_context != NULL) {
-        gst_install_plugins_context_free(player->install_plugins_context);
-        player->install_plugins_context = NULL;
-    }
-    #endif
+    _bp_missing_elements_destroy (player);
+    
+    memset (player, 0, sizeof (BansheePlayer));
     
-    g_free(player);
+    g_free (player);
     player = NULL;
+    
+    bp_debug ("bp: disposed player");
 }
 
 void

Modified: trunk/banshee/libbanshee/banshee-player.h
==============================================================================
--- trunk/banshee/libbanshee/banshee-player.h	(original)
+++ trunk/banshee/libbanshee/banshee-player.h	Mon Mar 31 21:25:47 2008
@@ -5,22 +5,17 @@
 #  include "config.h"
 #endif
 
-#include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
 #include <gst/gst.h>
+#include <gdk/gdk.h>
 
 #ifdef HAVE_GST_PBUTILS
 #  include <gst/pbutils/pbutils.h>
 #endif
 
-#include <gdk/gdk.h>
 #ifdef GDK_WINDOWING_X11
-#include <gdk/gdkx.h>
-#include <gst/interfaces/xoverlay.h>
+#  include <gdk/gdkx.h>
+#  include <gst/interfaces/xoverlay.h>
 #endif
 
 #define IS_BANSHEE_PLAYER(e) (e != NULL)

Modified: trunk/banshee/libbanshee/libbanshee.mdp
==============================================================================
--- trunk/banshee/libbanshee/libbanshee.mdp	(original)
+++ trunk/banshee/libbanshee/libbanshee.mdp	Mon Mar 31 21:25:47 2008
@@ -18,6 +18,8 @@
     <File name="gst-misc.h" subtype="Code" buildaction="Nothing" />
     <File name="gst-transcode.h" subtype="Code" buildaction="Nothing" />
     <File name="banshee-player-cdda.c" subtype="Code" buildaction="Compile" />
+    <File name="banshee-player-missing-elements.c" subtype="Code" buildaction="Compile" />
+    <File name="banshee-player-missing-elements.h" subtype="Code" buildaction="Nothing" />
   </Contents>
   <compiler ctype="GccCompiler" />
   <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="True" RelativeMakefileName="Makefile.am">

Modified: trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.mdp
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.mdp	(original)
+++ trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.mdp	Mon Mar 31 21:25:47 2008
@@ -8,7 +8,28 @@
     </Configuration>
   </Configurations>
   <Contents>
-    <File name="Banshee.Daap.addin.xml" subtype="Code" buildaction="EmbedAsResource" />
+    <File name="Banshee.Daap/DaapService.cs" subtype="Code" buildaction="Compile" />
+    <File name="Banshee.Daap/DaapContainerSource.cs" subtype="Code" buildaction="Compile" />
+    <File name="Banshee.Daap/DaapSource.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/content-codes" subtype="Code" buildaction="EmbedAsResource" />
+    <File name="Resources/Banshee.Daap.addin.xml" subtype="Code" buildaction="EmbedAsResource" />
+    <File name="Daap/AuthenticationException.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/BrokenMD5.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/Client.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/ContentCodeBag.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/ContentFetcher.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/ContentParser.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/ContentWriter.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/Database.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/Hasher.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/LoginException.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/Playlist.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/Server.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/ServerInfo.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/ServiceLocator.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/Track.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/User.cs" subtype="Code" buildaction="Compile" />
+    <File name="Daap/Utility.cs" subtype="Code" buildaction="Compile" />
   </Contents>
   <References>
     <ProjectReference type="Project" localcopy="True" refto="Banshee.Core" />
@@ -25,4 +46,4 @@
     <AsmRefVar />
     <ProjectRefVar />
   </MonoDevelop.Autotools.MakefileInfo>
-</Project>
+</Project>
\ No newline at end of file

Modified: trunk/banshee/src/Extensions/Banshee.Daap/Makefile.am
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Daap/Makefile.am	(original)
+++ trunk/banshee/src/Extensions/Banshee.Daap/Makefile.am	Mon Mar 31 21:25:47 2008
@@ -3,15 +3,31 @@
 LINK = $(REF_EXTENSION_DAAP)
 INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-SOURCES = \
+SOURCES =  \
+	Banshee.Daap/DaapContainerSource.cs \
 	Banshee.Daap/DaapService.cs \
-    Banshee.Daap/DaapContainerSource.cs \
-    Banshee.Daap/DaapSource.cs \
-    Daap/*.cs
+	Banshee.Daap/DaapSource.cs \
+	Daap/AuthenticationException.cs \
+	Daap/BrokenMD5.cs \
+	Daap/Client.cs \
+	Daap/ContentCodeBag.cs \
+	Daap/ContentFetcher.cs \
+	Daap/ContentParser.cs \
+	Daap/ContentWriter.cs \
+	Daap/Database.cs \
+	Daap/Hasher.cs \
+	Daap/LoginException.cs \
+	Daap/Playlist.cs \
+	Daap/Server.cs \
+	Daap/ServerInfo.cs \
+	Daap/ServiceLocator.cs \
+	Daap/Track.cs \
+	Daap/User.cs \
+	Daap/Utility.cs
 
-RESOURCES = \
+RESOURCES =  \
 	Daap/content-codes \
-    Resources/Banshee.Daap.addin.xml
+	Resources/Banshee.Daap.addin.xml
 
 include $(top_srcdir)/build/build.mk
 

Modified: trunk/banshee/src/Extensions/Extensions.mds
==============================================================================
--- trunk/banshee/src/Extensions/Extensions.mds	(original)
+++ trunk/banshee/src/Extensions/Extensions.mds	Mon Mar 31 21:25:47 2008
@@ -21,7 +21,7 @@
     <Execute type="None" entry="Banshee.AudioCd" />
   </StartMode>
   <Entries>
-    <Entry filename="Banshee.NotificationArea/Banshee.Daap.mdp" />
+    <Entry filename="Banshee.Daap/Banshee.Daap.mdp" />
     <Entry filename="Banshee.NotificationArea/Banshee.NotificationArea.mdp" />
     <Entry filename="Banshee.MultimediaKeys/Banshee.MultimediaKeys.mdp" />
     <Entry filename="Banshee.PlayQueue/Banshee.PlayQueue.mdp" />
@@ -30,4 +30,4 @@
     <Entry filename="Banshee.Bookmarks/Banshee.Bookmarks.mdp" />
     <Entry filename="Banshee.AudioCd/Banshee.AudioCd.mdp" />
   </Entries>
-</Combine>
\ No newline at end of file
+</Combine>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]