]> git.sesse.net Git - vlc/blobdiff - modules/media_library/sql_media_library.c
Qt: do not delete parented QDialogs
[vlc] / modules / media_library / sql_media_library.c
index 5acd7fdb9b5cd0c672cc287d84b95320dc2eacf6..1f1758194dd8c8c2dd685ff21ccbfc98458dea31 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include "sql_media_library.h"
 
 static const char* ppsz_AudioExtensions[] = { EXTENSIONS_AUDIO_CSV, NULL };
@@ -52,9 +56,8 @@ static const char* ppsz_VideoExtensions[] = { EXTENSIONS_VIDEO_CSV, NULL };
 static int load( vlc_object_t* );
 static void unload( vlc_object_t* );
 
-static int CreateInputItemFromMedia( media_library_t *p_ml,
-                              input_item_t **pp_item,
-                              ml_media_t *p_media );
+static int CreateInputItemFromMedia( input_item_t **pp_item,
+                                     ml_media_t *p_media );
 
 
 struct ml_table_elt
@@ -154,7 +157,12 @@ static int load( vlc_object_t *obj )
     vlc_mutex_init( &p_ml->p_sys->lock );
 
     /* Initialise Sql module */
-    InitDatabase( p_ml );
+    if ( InitDatabase( p_ml ) != VLC_SUCCESS )
+    {
+        vlc_mutex_destroy( &p_ml->p_sys->lock );
+        free( p_ml->p_sys );
+        return VLC_EGENERIC;
+    }
 
     /* Initialise the media pool */
     ARRAY_INIT( p_ml->p_sys->mediapool );
@@ -1056,11 +1064,7 @@ int InitDatabase( media_library_t *p_ml )
     p_ml->p_sys->p_sql = sql_Create( p_ml, NULL, psz_dbhost, i_port, psz_user,
                                      psz_pass );
     if( !p_ml->p_sys->p_sql )
-    {
-        vlc_mutex_destroy( &p_ml->p_sys->lock );
-        free( p_ml->p_sys );
         return VLC_EGENERIC;
-    }
 
     /* Let's check if tables exist */
     int i_version = GetDatabaseVersion( p_ml );
@@ -1176,7 +1180,7 @@ input_item_t* GetInputItemFromMedia( media_library_t *p_ml, int i_media )
         ml_media_t* p_media = media_New( p_ml, i_media, ML_MEDIA, true );
         if( p_media == NULL )
             return NULL;
-        CreateInputItemFromMedia( p_ml, &p_item, p_media );
+        CreateInputItemFromMedia( &p_item, p_media );
         watch_add_Item( p_ml, p_item, p_media );
         ml_gc_decref( p_media );
     }
@@ -1206,7 +1210,7 @@ void CopyInputItemToMedia( ml_media_t *p_media, input_item_t *p_item )
     p_media->psz_title      = input_item_GetTitle       ( p_item );
     p_media->psz_uri        = input_item_GetURL         ( p_item );
     if( !p_media->psz_uri )
-        p_media->psz_uri    = strdup( p_item->psz_uri );
+        p_media->psz_uri = input_item_GetURI( p_item );
     p_media->psz_album      = input_item_GetAlbum       ( p_item );
     p_media->psz_cover      = input_item_GetArtURL      ( p_item );
     p_media->psz_genre      = input_item_GetGenre       ( p_item );
@@ -1306,7 +1310,7 @@ void CopyMediaToInputItem( input_item_t *p_item, ml_media_t *p_media )
     ml_LockMedia( p_media );
     if( p_media->psz_title && *p_media->psz_title )
         input_item_SetTitle( p_item, p_media->psz_title );
-    if( p_media->psz_uri && *p_media->psz_uri )
+    if( p_media->psz_uri && *p_media->psz_uri && !strncmp( p_media->psz_uri, "http", 4 ) )
         input_item_SetURL( p_item, p_media->psz_uri );
     if( p_media->psz_album && *p_media->psz_album )
         input_item_SetAlbum( p_item, p_media->psz_album );
@@ -1349,16 +1353,13 @@ void CopyMediaToInputItem( input_item_t *p_item, ml_media_t *p_media )
 
 /**
  * @brief Copy a ml_media_t to an input_item_t
- * @param p_ml The Media Library object
  * @param pp_item A pointer to a new input_item (return value)
  * @param p_media The media to copy as an input item
  * @note This function is threadsafe
  */
-static int CreateInputItemFromMedia( media_library_t *p_ml,
-                              input_item_t **pp_item,
-                              ml_media_t *p_media )
+static int CreateInputItemFromMedia( input_item_t **pp_item,
+                                     ml_media_t *p_media )
 {
-    playlist_t *p_pl = pl_Get( p_ml );
     *pp_item = input_item_New( p_media->psz_uri, p_media->psz_title );
                                /* ITEM_TYPE_FILE ); */
     if( !*pp_item )