[vlc-devel] [PATCH] access: pf_control is not mandatory for directory accesses
Thomas Guillem
thomas at gllm.fr
Mon May 4 09:28:20 CEST 2015
---
include/vlc_access.h | 3 ++-
modules/access/directory.c | 30 ------------------------------
modules/access/dsm/access.c | 27 ---------------------------
modules/access/sftp.c | 28 ----------------------------
modules/services_discovery/upnp.cpp | 31 -------------------------------
src/input/access.c | 5 +++++
6 files changed, 7 insertions(+), 117 deletions(-)
diff --git a/include/vlc_access.h b/include/vlc_access.h
index e83d53f..1f3cb03 100644
--- a/include/vlc_access.h
+++ b/include/vlc_access.h
@@ -117,7 +117,8 @@ struct access_t
static inline int access_vaControl( access_t *p_access, int i_query, va_list args )
{
if( !p_access ) return VLC_EGENERIC;
- return p_access->pf_control( p_access, i_query, args );
+ return p_access->pf_control ? p_access->pf_control( p_access, i_query, args )
+ : VLC_EGENERIC;
}
static inline int access_Control( access_t *p_access, int i_query, ... )
diff --git a/modules/access/directory.c b/modules/access/directory.c
index 7209978..5cac748 100644
--- a/modules/access/directory.c
+++ b/modules/access/directory.c
@@ -327,7 +327,6 @@ int DirInit (access_t *p_access, DIR *handle)
p_sys->ignored_exts = var_InheritString (p_access, "ignore-filetypes");
p_access->pf_readdir = DirRead;
- p_access->pf_control = DirControl;
return VLC_SUCCESS;
@@ -417,32 +416,3 @@ int DirRead (access_t *p_access, input_item_node_t *p_current_node)
return VLC_SUCCESS;
}
-
-/*****************************************************************************
- * Control:
- *****************************************************************************/
-int DirControl (access_t *p_access, int i_query, va_list args)
-{
- VLC_UNUSED (p_access);
-
- switch (i_query)
- {
- case ACCESS_CAN_SEEK:
- case ACCESS_CAN_FASTSEEK:
- *va_arg (args, bool*) = false;
- break;
-
- case ACCESS_CAN_PAUSE:
- case ACCESS_CAN_CONTROL_PACE:
- *va_arg (args, bool*) = true;
- break;
-
- case ACCESS_GET_PTS_DELAY:
- *va_arg (args, int64_t *) = DEFAULT_PTS_DELAY * 1000;
- break;
-
- default:
- return VLC_EGENERIC;
- }
- return VLC_SUCCESS;
- }
diff --git a/modules/access/dsm/access.c b/modules/access/dsm/access.c
index d6c83f6..5695718 100644
--- a/modules/access/dsm/access.c
+++ b/modules/access/dsm/access.c
@@ -692,32 +692,6 @@ static int BrowseDirectory( access_t *p_access, input_item_node_t *p_node )
return i_ret;
}
-static int BrowserControl( access_t *p_access, int i_query, va_list args )
-{
- VLC_UNUSED( p_access );
-
- switch( i_query )
- {
- case ACCESS_CAN_SEEK:
- case ACCESS_CAN_FASTSEEK:
- *va_arg( args, bool* ) = false;
- break;
-
- case ACCESS_CAN_PAUSE:
- case ACCESS_CAN_CONTROL_PACE:
- *va_arg( args, bool* ) = true;
- break;
-
- case ACCESS_GET_PTS_DELAY:
- *va_arg( args, int64_t * ) = DEFAULT_PTS_DELAY * 1000;
- break;
-
- default:
- return VLC_EGENERIC;
- }
- return VLC_SUCCESS;
-}
-
static int BrowserInit( access_t *p_access )
{
access_sys_t *p_sys = p_access->p_sys;
@@ -726,7 +700,6 @@ static int BrowserInit( access_t *p_access )
p_access->pf_readdir = BrowseShare;
else
p_access->pf_readdir = BrowseDirectory;
- p_access->pf_control = BrowserControl;
return VLC_SUCCESS;
}
diff --git a/modules/access/sftp.c b/modules/access/sftp.c
index 3a59fd2..43edca1 100644
--- a/modules/access/sftp.c
+++ b/modules/access/sftp.c
@@ -272,7 +272,6 @@ static int Open( vlc_object_t* p_this )
p_sys->file = libssh2_sftp_opendir( p_sys->sftp_session, url.psz_path );
p_access->pf_readdir = DirRead;
- p_access->pf_control = DirControl;
if( p_sys->file )
{
@@ -506,30 +505,3 @@ static int DirRead (access_t *p_access, input_item_node_t *p_current_node)
free( psz_file );
return VLC_SUCCESS;
}
-
-
-static int DirControl( access_t *p_access, int i_query, va_list args )
-{
- VLC_UNUSED( p_access );
-
- switch( i_query )
- {
- case ACCESS_CAN_SEEK:
- case ACCESS_CAN_FASTSEEK:
- *va_arg( args, bool* ) = false;
- break;
-
- case ACCESS_CAN_PAUSE:
- case ACCESS_CAN_CONTROL_PACE:
- *va_arg( args, bool* ) = true;
- break;
-
- case ACCESS_GET_PTS_DELAY:
- *va_arg( args, int64_t * ) = DEFAULT_PTS_DELAY * 1000;
- break;
-
- default:
- return VLC_EGENERIC;
- }
- return VLC_SUCCESS;
-}
diff --git a/modules/services_discovery/upnp.cpp b/modules/services_discovery/upnp.cpp
index a16794a..7cc3438 100644
--- a/modules/services_discovery/upnp.cpp
+++ b/modules/services_discovery/upnp.cpp
@@ -806,36 +806,6 @@ static int ReadDirectory( access_t *p_access, input_item_node_t* p_node )
return VLC_SUCCESS;
}
-static int Control( access_t *, int i_query, va_list args )
-{
- switch ( i_query )
- {
- case ACCESS_CAN_SEEK:
- case ACCESS_CAN_FASTSEEK:
- case ACCESS_CAN_PAUSE:
- case ACCESS_CAN_CONTROL_PACE:
- *va_arg( args, bool* ) = false;
- break;
-
- case ACCESS_GET_SIZE:
- {
- *va_arg( args, uint64_t * ) = 0;
- break;
- }
- case ACCESS_GET_PTS_DELAY:
- *va_arg( args, int64_t * ) = 0;
- break;
-
- case ACCESS_SET_PAUSE_STATE:
- /* Nothing to do */
- break;
-
- default:
- return VLC_EGENERIC;
- }
- return VLC_SUCCESS;
-}
-
static int Open( vlc_object_t *p_this )
{
access_t* p_access = (access_t*)p_this;
@@ -852,7 +822,6 @@ static int Open( vlc_object_t *p_this )
}
p_access->pf_readdir = ReadDirectory;
- ACCESS_SET_CALLBACKS( NULL, NULL, Control, NULL );
return VLC_SUCCESS;
}
diff --git a/src/input/access.c b/src/input/access.c
index a9b2804..7bf4390 100644
--- a/src/input/access.c
+++ b/src/input/access.c
@@ -25,6 +25,8 @@
# include "config.h"
#endif
+#include <assert.h>
+
#include "access.h"
#include <libvlc.h>
#include <vlc_url.h>
@@ -89,6 +91,9 @@ access_t *access_New( vlc_object_t *p_obj, input_thread_t *p_parent_input,
if( p_access->p_module == NULL )
goto error;
+ /* if access has pf_readdir, pf_control is not mandatory */
+ assert( p_access->pf_control || p_access->pf_readdir );
+
return p_access;
error:
--
2.1.4
More information about the vlc-devel
mailing list