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
65892ac8
Commit
65892ac8
authored
Jun 04, 2008
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Handle sout-keep from the playlist engine
parent
bed1fe1b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
9 deletions
+21
-9
src/libvlc.h
src/libvlc.h
+3
-0
src/playlist/control.c
src/playlist/control.c
+4
-1
src/playlist/engine.c
src/playlist/engine.c
+14
-8
No files found.
src/libvlc.h
View file @
65892ac8
...
@@ -237,6 +237,9 @@ typedef struct libvlc_priv_t
...
@@ -237,6 +237,9 @@ typedef struct libvlc_priv_t
vlm_t
*
p_vlm
;
///< the VLM singleton (or NULL)
vlm_t
*
p_vlm
;
///< the VLM singleton (or NULL)
vlc_object_t
*
p_interaction
;
///< interface interaction object
vlc_object_t
*
p_interaction
;
///< interface interaction object
httpd_t
*
p_httpd
;
///< HTTP daemon (src/network/httpd.c)
httpd_t
*
p_httpd
;
///< HTTP daemon (src/network/httpd.c)
/* Private playlist data (FIXME - playlist_t is too public...) */
sout_instance_t
*
p_sout
;
///< kept sout instance (for playlist)
}
libvlc_priv_t
;
}
libvlc_priv_t
;
static
inline
libvlc_priv_t
*
libvlc_priv
(
libvlc_int_t
*
libvlc
)
static
inline
libvlc_priv_t
*
libvlc_priv
(
libvlc_int_t
*
libvlc
)
...
...
src/playlist/control.c
View file @
65892ac8
...
@@ -464,6 +464,7 @@ playlist_item_t * playlist_NextItem( playlist_t *p_playlist )
...
@@ -464,6 +464,7 @@ playlist_item_t * playlist_NextItem( playlist_t *p_playlist )
int
playlist_PlayItem
(
playlist_t
*
p_playlist
,
playlist_item_t
*
p_item
)
int
playlist_PlayItem
(
playlist_t
*
p_playlist
,
playlist_item_t
*
p_item
)
{
{
input_item_t
*
p_input
=
p_item
->
p_input
;
input_item_t
*
p_input
=
p_item
->
p_input
;
sout_instance_t
**
pp_sout
=
&
libvlc_priv
(
p_playlist
->
p_libvlc
)
->
p_sout
;
int
i_activity
=
var_GetInteger
(
p_playlist
,
"activity"
)
;
int
i_activity
=
var_GetInteger
(
p_playlist
,
"activity"
)
;
msg_Dbg
(
p_playlist
,
"creating new input thread"
);
msg_Dbg
(
p_playlist
,
"creating new input thread"
);
...
@@ -475,7 +476,9 @@ int playlist_PlayItem( playlist_t *p_playlist, playlist_item_t *p_item )
...
@@ -475,7 +476,9 @@ int playlist_PlayItem( playlist_t *p_playlist, playlist_item_t *p_item )
var_SetInteger
(
p_playlist
,
"activity"
,
i_activity
+
var_SetInteger
(
p_playlist
,
"activity"
,
i_activity
+
DEFAULT_INPUT_ACTIVITY
);
DEFAULT_INPUT_ACTIVITY
);
p_playlist
->
p_input
=
input_CreateThread
(
p_playlist
,
p_input
);
p_playlist
->
p_input
=
input_CreateThreadExtended
(
p_playlist
,
p_input
,
NULL
,
*
pp_sout
);
*
pp_sout
=
NULL
;
char
*
psz_uri
=
input_item_GetURI
(
p_item
->
p_input
);
char
*
psz_uri
=
input_item_GetURI
(
p_item
->
p_input
);
if
(
psz_uri
&&
(
!
strncmp
(
psz_uri
,
"directory:"
,
10
)
||
if
(
psz_uri
&&
(
!
strncmp
(
psz_uri
,
"directory:"
,
10
)
||
...
...
src/playlist/engine.c
View file @
65892ac8
...
@@ -26,6 +26,7 @@
...
@@ -26,6 +26,7 @@
# include "config.h"
# include "config.h"
#endif
#endif
#include <assert.h>
#include <vlc_common.h>
#include <vlc_common.h>
#include <vlc_vout.h>
#include <vlc_vout.h>
#include <vlc_sout.h>
#include <vlc_sout.h>
...
@@ -263,10 +264,16 @@ check_input:
...
@@ -263,10 +264,16 @@ check_input:
{
{
int
i_activity
;
int
i_activity
;
input_thread_t
*
p_input
;
input_thread_t
*
p_input
;
sout_instance_t
**
pp_sout
=
&
libvlc_priv
(
p_playlist
->
p_libvlc
)
->
p_sout
;
PL_DEBUG
(
"dead input"
);
PL_DEBUG
(
"dead input"
);
p_input
=
p_playlist
->
p_input
;
p_input
=
p_playlist
->
p_input
;
p_playlist
->
p_input
=
NULL
;
p_playlist
->
p_input
=
NULL
;
assert
(
*
pp_sout
==
NULL
);
if
(
var_CreateGetBool
(
p_input
,
"sout-keep"
)
)
*
pp_sout
=
input_DetachSout
(
p_input
);
/* Release the playlist lock, because we may get stuck
/* Release the playlist lock, because we may get stuck
* in vlc_object_release() for some time. */
* in vlc_object_release() for some time. */
...
@@ -404,6 +411,9 @@ void playlist_LastLoop( playlist_t *p_playlist )
...
@@ -404,6 +411,9 @@ void playlist_LastLoop( playlist_t *p_playlist )
p_playlist
->
p_input
=
NULL
;
p_playlist
->
p_input
=
NULL
;
PL_UNLOCK
;
PL_UNLOCK
;
/* sout-keep: no need to anything here.
* The last input will destroy its sout, if any, by itself */
/* Destroy input */
/* Destroy input */
vlc_object_release
(
p_input
);
vlc_object_release
(
p_input
);
continue
;
continue
;
...
@@ -429,14 +439,10 @@ void playlist_LastLoop( playlist_t *p_playlist )
...
@@ -429,14 +439,10 @@ void playlist_LastLoop( playlist_t *p_playlist )
}
}
#ifdef ENABLE_SOUT
#ifdef ENABLE_SOUT
/* close all remaining sout */
/* close the remaining sout-keep (if there was no input atm) */
while
(
(
p_obj
=
vlc_object_find
(
p_playlist
,
sout_instance_t
*
p_sout
=
libvlc_priv
(
p_playlist
->
p_libvlc
)
->
p_sout
;
VLC_OBJECT_SOUT
,
FIND_CHILD
)
)
)
if
(
p_sout
)
{
sout_DeleteInstance
(
p_sout
);
vlc_object_detach
(
p_obj
);
vlc_object_release
(
p_obj
);
sout_DeleteInstance
(
(
sout_instance_t
*
)
p_obj
);
}
#endif
#endif
/* close all remaining vout */
/* close all remaining vout */
...
...
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