Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
b4f2f488
Commit
b4f2f488
authored
Sep 17, 2006
by
Clément Stenac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Services discovery are not forced to have a run function
parent
360b392d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
89 deletions
+36
-89
modules/services_discovery/sap.c
modules/services_discovery/sap.c
+14
-36
modules/services_discovery/shout.c
modules/services_discovery/shout.c
+9
-39
src/playlist/services_discovery.c
src/playlist/services_discovery.c
+13
-14
No files found.
modules/services_discovery/sap.c
View file @
b4f2f488
...
@@ -224,7 +224,6 @@ struct services_discovery_sys_t
...
@@ -224,7 +224,6 @@ struct services_discovery_sys_t
/* playlist node */
/* playlist node */
playlist_item_t
*
p_node_cat
;
playlist_item_t
*
p_node_cat
;
playlist_item_t
*
p_node_one
;
playlist_item_t
*
p_node_one
;
playlist_t
*
p_playlist
;
/* Table of announces */
/* Table of announces */
int
i_announces
;
int
i_announces
;
...
@@ -304,16 +303,9 @@ static int Open( vlc_object_t *p_this )
...
@@ -304,16 +303,9 @@ static int Open( vlc_object_t *p_this )
?
VLC_TRUE
:
VLC_FALSE
;
?
VLC_TRUE
:
VLC_FALSE
;
/* Create our playlist node */
/* Create our playlist node */
p_sys
->
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_sd
,
pl_Yield
(
p_sd
);
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
!
p_sys
->
p_playlist
)
{
msg_Warn
(
p_sd
,
"unable to find playlist, cancelling SAP listening"
);
return
VLC_EGENERIC
;
}
playlist_NodesPairCreate
(
p
_sys
->
p_playlist
,
_
(
"SAP sessions"
),
playlist_NodesPairCreate
(
p
l_Get
(
p_sd
)
,
_
(
"SAP sessions"
),
&
p_sys
->
p_node_cat
,
&
p_sys
->
p_node_one
,
&
p_sys
->
p_node_cat
,
&
p_sys
->
p_node_one
,
VLC_TRUE
);
VLC_TRUE
);
...
@@ -448,15 +440,11 @@ static void Close( vlc_object_t *p_this )
...
@@ -448,15 +440,11 @@ static void Close( vlc_object_t *p_this )
}
}
FREENULL
(
p_sys
->
pp_announces
);
FREENULL
(
p_sys
->
pp_announces
);
if
(
p_sys
->
p_playlist
)
playlist_NodeDelete
(
pl_Get
(
p_sd
),
p_sys
->
p_node_cat
,
VLC_TRUE
,
{
VLC_TRUE
);
playlist_NodeDelete
(
p_sys
->
p_playlist
,
p_sys
->
p_node_cat
,
VLC_TRUE
,
playlist_NodeDelete
(
pl_Get
(
p_sd
),
p_sys
->
p_node_one
,
VLC_TRUE
,
VLC_TRUE
);
VLC_TRUE
);
playlist_NodeDelete
(
p_sys
->
p_playlist
,
p_sys
->
p_node_one
,
VLC_TRUE
,
pl_Release
(
p_sd
);
VLC_TRUE
);
vlc_object_release
(
p_sys
->
p_playlist
);
}
free
(
p_sys
);
free
(
p_sys
);
}
}
...
@@ -568,20 +556,13 @@ static void Run( services_discovery_t *p_sd )
...
@@ -568,20 +556,13 @@ static void Run( services_discovery_t *p_sd )
static
int
Demux
(
demux_t
*
p_demux
)
static
int
Demux
(
demux_t
*
p_demux
)
{
{
sdp_t
*
p_sdp
=
p_demux
->
p_sys
->
p_sdp
;
sdp_t
*
p_sdp
=
p_demux
->
p_sys
->
p_sdp
;
playlist_t
*
p_playlist
;
input_thread_t
*
p_input
;
input_thread_t
*
p_input
;
input_item_t
*
p_parent_input
;
input_item_t
*
p_parent_input
;
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_demux
,
VLC_OBJECT_PLAYLIST
,
playlist_t
*
p_playlist
=
pl_Yield
(
p_demux
);
FIND_ANYWHERE
);
if
(
!
p_playlist
)
{
msg_Err
(
p_demux
,
"playlist could not be found"
);
return
VLC_EGENERIC
;
}
p_input
=
(
input_thread_t
*
)
vlc_object_find
(
p_demux
,
VLC_OBJECT_INPUT
,
p_input
=
(
input_thread_t
*
)
vlc_object_find
(
p_demux
,
VLC_OBJECT_INPUT
,
FIND_PARENT
);
FIND_PARENT
);
assert
(
p_input
);
if
(
!
p_input
)
if
(
!
p_input
)
{
{
msg_Err
(
p_demux
,
"parent input could not be found"
);
msg_Err
(
p_demux
,
"parent input could not be found"
);
...
@@ -862,7 +843,7 @@ sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint16_t i_hash,
...
@@ -862,7 +843,7 @@ sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint16_t i_hash,
if
(
p_child
==
NULL
)
if
(
p_child
==
NULL
)
{
{
p_child
=
playlist_NodeCreate
(
p
_sys
->
p_playlist
,
psz_value
,
p_child
=
playlist_NodeCreate
(
p
l_Get
(
p_sd
)
,
psz_value
,
p_sys
->
p_node_cat
);
p_sys
->
p_node_cat
);
p_child
->
i_flags
&=
~
PLAYLIST_SKIP_FLAG
;
p_child
->
i_flags
&=
~
PLAYLIST_SKIP_FLAG
;
}
}
...
@@ -872,13 +853,13 @@ sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint16_t i_hash,
...
@@ -872,13 +853,13 @@ sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint16_t i_hash,
p_child
=
p_sys
->
p_node_cat
;
p_child
=
p_sys
->
p_node_cat
;
}
}
p_item
=
playlist_NodeAddInput
(
p
_sys
->
p_playlist
,
p_input
,
p_child
,
p_item
=
playlist_NodeAddInput
(
p
l_Get
(
p_sd
)
,
p_input
,
p_child
,
PLAYLIST_APPEND
,
PLAYLIST_END
);
PLAYLIST_APPEND
,
PLAYLIST_END
);
p_item
->
i_flags
&=
~
PLAYLIST_SKIP_FLAG
;
p_item
->
i_flags
&=
~
PLAYLIST_SKIP_FLAG
;
p_item
->
i_flags
&=
~
PLAYLIST_SAVE_FLAG
;
p_item
->
i_flags
&=
~
PLAYLIST_SAVE_FLAG
;
p_sap
->
i_item_id_cat
=
p_item
->
i_id
;
p_sap
->
i_item_id_cat
=
p_item
->
i_id
;
p_item
=
playlist_NodeAddInput
(
p
_sys
->
p_playlist
,
p_input
,
p_item
=
playlist_NodeAddInput
(
p
l_Get
(
p_sd
)
,
p_input
,
p_sys
->
p_node_one
,
PLAYLIST_APPEND
,
PLAYLIST_END
);
p_sys
->
p_node_one
,
PLAYLIST_APPEND
,
PLAYLIST_END
);
p_item
->
i_flags
&=
~
PLAYLIST_SKIP_FLAG
;
p_item
->
i_flags
&=
~
PLAYLIST_SKIP_FLAG
;
p_item
->
i_flags
&=
~
PLAYLIST_SAVE_FLAG
;
p_item
->
i_flags
&=
~
PLAYLIST_SAVE_FLAG
;
...
@@ -1379,10 +1360,7 @@ static int RemoveAnnounce( services_discovery_t *p_sd,
...
@@ -1379,10 +1360,7 @@ static int RemoveAnnounce( services_discovery_t *p_sd,
}
}
if
(
p_announce
->
i_input_id
>
-
1
)
if
(
p_announce
->
i_input_id
>
-
1
)
{
playlist_LockDeleteAllFromInput
(
pl_Get
(
p_sd
),
p_announce
->
i_input_id
);
playlist_LockDeleteAllFromInput
(
p_sd
->
p_sys
->
p_playlist
,
p_announce
->
i_input_id
);
}
for
(
i
=
0
;
i
<
p_sd
->
p_sys
->
i_announces
;
i
++
)
for
(
i
=
0
;
i
<
p_sd
->
p_sys
->
i_announces
;
i
++
)
{
{
...
...
modules/services_discovery/shout.c
View file @
b4f2f488
...
@@ -121,25 +121,12 @@ static int OpenTV( vlc_object_t *p_this )
...
@@ -121,25 +121,12 @@ static int OpenTV( vlc_object_t *p_this )
static
int
Open
(
vlc_object_t
*
p_this
,
int
i_type
)
static
int
Open
(
vlc_object_t
*
p_this
,
int
i_type
)
{
{
services_discovery_t
*
p_sd
=
(
services_discovery_t
*
)
p_this
;
services_discovery_t
*
p_sd
=
(
services_discovery_t
*
)
p_this
;
services_discovery_sys_t
*
p_sys
=
malloc
(
sizeof
(
services_discovery_sys_t
)
);
vlc_value_t
val
;
vlc_value_t
val
;
playlist_t
*
p_playlist
;
playlist_view_t
*
p_view
;
playlist_view_t
*
p_view
;
playlist_t
*
p_playlist
=
pl_Yield
(
p_this
);
p_sd
->
pf_run
=
Run
;
DECMALLOC_ERR
(
p_sys
,
services_discovery_sys_t
)
;
p_sd
->
p_sys
=
p_sys
;
p_sd
->
p_sys
=
p_sys
;
/* Create our playlist node */
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_sd
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
!
p_playlist
)
{
msg_Warn
(
p_sd
,
"unable to find playlist, cancelling"
);
return
VLC_EGENERIC
;
}
switch
(
i_type
)
switch
(
i_type
)
{
{
case
TV
:
case
TV
:
...
@@ -168,11 +155,11 @@ static int Open( vlc_object_t *p_this, int i_type )
...
@@ -168,11 +155,11 @@ static int Open( vlc_object_t *p_this, int i_type )
p_sys
->
p_node_one
->
i_flags
|=
PLAYLIST_SKIP_FLAG
;
p_sys
->
p_node_one
->
i_flags
|=
PLAYLIST_SKIP_FLAG
;
p_sys
->
p_node_one
->
p_input
->
i_id
=
p_sys
->
p_node_cat
->
p_input
->
i_id
;
p_sys
->
p_node_one
->
p_input
->
i_id
=
p_sys
->
p_node_cat
->
p_input
->
i_id
;
val
.
b_bool
=
VLC_TRUE
;
var_SetVoid
(
p_playlist
,
"intf-change"
);
var_Set
(
p_playlist
,
"intf-change"
,
val
);
vlc_object_release
(
p_playlist
);
pl_Release
(
p_this
);
input_Read
(
p_sd
,
p_sys
->
p_input
,
VLC_FALSE
);
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
...
@@ -183,26 +170,9 @@ static void Close( vlc_object_t *p_this )
...
@@ -183,26 +170,9 @@ static void Close( vlc_object_t *p_this )
{
{
services_discovery_t
*
p_sd
=
(
services_discovery_t
*
)
p_this
;
services_discovery_t
*
p_sd
=
(
services_discovery_t
*
)
p_this
;
services_discovery_sys_t
*
p_sys
=
p_sd
->
p_sys
;
services_discovery_sys_t
*
p_sys
=
p_sd
->
p_sys
;
playlist_t
*
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_sd
,
playlist_t
*
p_playlist
=
pl_Yield
(
p_sd
);
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
playlist_NodeDelete
(
p_playlist
,
p_sys
->
p_node_cat
,
VLC_TRUE
,
VLC_TRUE
);
if
(
p_playlist
)
playlist_NodeDelete
(
p_playlist
,
p_sys
->
p_node_one
,
VLC_TRUE
,
VLC_TRUE
);
{
pl_Release
(
p_sd
);
playlist_NodeDelete
(
p_playlist
,
p_sys
->
p_node_cat
,
VLC_TRUE
,
VLC_TRUE
);
playlist_NodeDelete
(
p_playlist
,
p_sys
->
p_node_one
,
VLC_TRUE
,
VLC_TRUE
);
vlc_object_release
(
p_playlist
);
}
free
(
p_sys
);
free
(
p_sys
);
}
}
/*****************************************************************************
* Run: main thread
*****************************************************************************/
static
void
Run
(
services_discovery_t
*
p_sd
)
{
services_discovery_sys_t
*
p_sys
=
p_sd
->
p_sys
;
int
i_id
=
input_Read
(
p_sd
,
p_sys
->
p_input
,
VLC_FALSE
);
while
(
!
p_sd
->
b_die
)
{
msleep
(
10
*
INTF_IDLE_SLEEP
);
}
}
src/playlist/services_discovery.c
View file @
b4f2f488
...
@@ -62,6 +62,8 @@ int playlist_ServicesDiscoveryAdd( playlist_t *p_playlist,
...
@@ -62,6 +62,8 @@ int playlist_ServicesDiscoveryAdd( playlist_t *p_playlist,
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
if
(
!
p_sd
->
pf_run
)
return
VLC_SUCCESS
;
if
(
vlc_thread_create
(
p_sd
,
"services_discovery"
,
RunSD
,
if
(
vlc_thread_create
(
p_sd
,
"services_discovery"
,
RunSD
,
VLC_THREAD_PRIORITY_LOW
,
VLC_FALSE
)
)
VLC_THREAD_PRIORITY_LOW
,
VLC_FALSE
)
)
{
{
...
@@ -79,8 +81,8 @@ int playlist_ServicesDiscoveryRemove( playlist_t * p_playlist,
...
@@ -79,8 +81,8 @@ int playlist_ServicesDiscoveryRemove( playlist_t * p_playlist,
{
{
int
i
;
int
i
;
services_discovery_t
*
p_sd
=
NULL
;
services_discovery_t
*
p_sd
=
NULL
;
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
PL_LOCK
;
for
(
i
=
0
;
i
<
p_playlist
->
i_sds
;
i
++
)
for
(
i
=
0
;
i
<
p_playlist
->
i_sds
;
i
++
)
{
{
if
(
!
strcmp
(
psz_module
,
p_playlist
->
pp_sds
[
i
]
->
psz_module
)
)
if
(
!
strcmp
(
psz_module
,
p_playlist
->
pp_sds
[
i
]
->
psz_module
)
)
...
@@ -93,22 +95,22 @@ int playlist_ServicesDiscoveryRemove( playlist_t * p_playlist,
...
@@ -93,22 +95,22 @@ int playlist_ServicesDiscoveryRemove( playlist_t * p_playlist,
if
(
p_sd
)
if
(
p_sd
)
{
{
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
)
;
PL_UNLOCK
;
p_sd
->
b_die
=
VLC_TRUE
;
p_sd
->
b_die
=
VLC_TRUE
;
vlc_thread_join
(
p_sd
);
if
(
p_sd
->
pf_run
)
vlc_thread_join
(
p_sd
);
free
(
p_sd
->
psz_module
);
free
(
p_sd
->
psz_module
);
module_Unneed
(
p_sd
,
p_sd
->
p_module
);
module_Unneed
(
p_sd
,
p_sd
->
p_module
);
vlc_mutex_lock
(
&
p_playlist
->
object_lock
)
;
PL_LOCK
;
vlc_object_destroy
(
p_sd
);
vlc_object_destroy
(
p_sd
);
}
}
else
else
{
{
msg_Warn
(
p_playlist
,
"module %s is not loaded"
,
psz_module
);
msg_Warn
(
p_playlist
,
"module %s is not loaded"
,
psz_module
);
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
)
;
PL_UNLOCK
;
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
PL_UNLOCK
;
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
...
@@ -116,17 +118,17 @@ vlc_bool_t playlist_IsServicesDiscoveryLoaded( playlist_t * p_playlist,
...
@@ -116,17 +118,17 @@ vlc_bool_t playlist_IsServicesDiscoveryLoaded( playlist_t * p_playlist,
const
char
*
psz_module
)
const
char
*
psz_module
)
{
{
int
i
;
int
i
;
vlc_mutex_lock
(
&
p_playlist
->
object_lock
)
;
PL_LOCK
;
for
(
i
=
0
;
i
<
p_playlist
->
i_sds
;
i
++
)
for
(
i
=
0
;
i
<
p_playlist
->
i_sds
;
i
++
)
{
{
if
(
!
strcmp
(
psz_module
,
p_playlist
->
pp_sds
[
i
]
->
psz_module
)
)
if
(
!
strcmp
(
psz_module
,
p_playlist
->
pp_sds
[
i
]
->
psz_module
)
)
{
{
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
)
;
PL_UNLOCK
;
return
VLC_TRUE
;
return
VLC_TRUE
;
}
}
}
}
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
)
;
PL_UNLOCK
;
return
VLC_FALSE
;
return
VLC_FALSE
;
}
}
...
@@ -148,14 +150,11 @@ int playlist_AddSDModules( playlist_t *p_playlist, char *psz_modules )
...
@@ -148,14 +150,11 @@ int playlist_AddSDModules( playlist_t *p_playlist, char *psz_modules )
while
(
psz_parser
&&
*
psz_parser
)
while
(
psz_parser
&&
*
psz_parser
)
{
{
while
(
*
psz_parser
==
' '
||
*
psz_parser
==
':'
)
while
(
*
psz_parser
==
' '
||
*
psz_parser
==
':'
)
{
psz_parser
++
;
psz_parser
++
;
}
if
(
(
psz_next
=
strchr
(
psz_parser
,
':'
)
)
)
if
(
(
psz_next
=
strchr
(
psz_parser
,
':'
)
)
)
{
*
psz_next
++
=
'\0'
;
*
psz_next
++
=
'\0'
;
}
if
(
*
psz_parser
==
'\0'
)
if
(
*
psz_parser
==
'\0'
)
{
{
break
;
break
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment