#include <vlc_common.h>
#include <vlc_playlist.h>
#include <vlc_plugin.h>
-#include <errno.h>
-#include <vlc_charset.h>
#include <vlc_interface.h>
#include <vlc_services_discovery.h>
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
#include "libmtp.h"
/*****************************************************************************
static int Open( vlc_object_t * );
static void Close( vlc_object_t * );
+VLC_SD_PROBE_HELPER("mtp", "MTP devices", SD_CAT_DEVICES)
+
vlc_module_begin()
set_shortname( "MTP" )
set_description( N_( "MTP devices" ) )
set_subcategory( SUBCAT_PLAYLIST_SD )
set_capability( "services_discovery", 0 )
set_callbacks( Open, Close )
- linked_with_a_crap_library_which_uses_atexit()
+ cannot_unload_broken_library()
+
+ VLC_SD_PROBE_SUBMODULE
vlc_module_end()
{
services_discovery_t *p_sd = ( services_discovery_t * )p_this;
- if( p_sd->p_sys->psz_name != NULL )
- free( p_sd->p_sys->psz_name );
+ free( p_sd->p_sys->psz_name );
vlc_cancel (p_sd->p_sys->thread);
vlc_join (p_sd->p_sys->thread, NULL);
free( p_sd->p_sys );
msg_Dbg( p_sd, "New device found" );
if( AddDevice( p_sd, &p_rawdevices[0] ) == VLC_SUCCESS )
i_status = 1;
+ else
+ i_status = 2;
}
else
{
}
free( p_rawdevices );
vlc_restorecancel(canc);
- msleep( 500000 );
+ if( i_status == 2 )
+ {
+ msleep( 5000000 );
+ i_status = 0;
+ }
+ else
+ msleep( 500000 );
}
return NULL;
}
{
if( !( p_sd->p_sys->pp_items = calloc( p_sd->p_sys->i_tracks_num,
sizeof( input_item_t * ) ) ) )
+ {
+ free( psz_name );
return VLC_ENOMEM;
+ }
p_sd->p_sys->i_count = 0;
while( p_track != NULL )
{
}
else
{
- msg_Warn( p_sd, "No device found, after all" );
+ msg_Info( p_sd, "The device seems to be mounted, unmount it first" );
return VLC_EGENERIC;
}
}
p_track->title ) ) == NULL )
{
msg_Err( p_sd, "Error adding %s, skipping it", p_track->filename );
+ free( psz_string );
return;
}
+ free( psz_string );
+
input_item_SetArtist( p_input, p_track->artist );
input_item_SetGenre( p_input, p_track->genre );
input_item_SetAlbum( p_input, p_track->album );
- free( psz_string );
if( asprintf( &psz_string, "%d", p_track->tracknumber ) != -1 )
{
input_item_SetTrackNum( p_input, psz_string );