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
7ca46db5
Commit
7ca46db5
authored
Jun 28, 2008
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
playlist: release video outputs *once* - fixes #1593
Releasing other thread's references is not a very good idea...
parent
c2c6729b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
10 deletions
+8
-10
src/playlist/engine.c
src/playlist/engine.c
+8
-10
No files found.
src/playlist/engine.c
View file @
7ca46db5
...
@@ -181,8 +181,6 @@ static void playlist_Destructor( vlc_object_t * p_this )
...
@@ -181,8 +181,6 @@ static void playlist_Destructor( vlc_object_t * p_this )
/* Destroy remaining objects */
/* Destroy remaining objects */
static
void
ObjectGarbageCollector
(
playlist_t
*
p_playlist
,
bool
b_force
)
static
void
ObjectGarbageCollector
(
playlist_t
*
p_playlist
,
bool
b_force
)
{
{
vlc_object_t
*
p_obj
;
if
(
!
b_force
)
if
(
!
b_force
)
{
{
if
(
mdate
()
-
p_playlist
->
gc_date
<
1000000
)
if
(
mdate
()
-
p_playlist
->
gc_date
<
1000000
)
...
@@ -195,15 +193,15 @@ static void ObjectGarbageCollector( playlist_t *p_playlist, bool b_force )
...
@@ -195,15 +193,15 @@ static void ObjectGarbageCollector( playlist_t *p_playlist, bool b_force )
}
}
vlc_mutex_lock
(
&
p_playlist
->
gc_lock
);
vlc_mutex_lock
(
&
p_playlist
->
gc_lock
);
while
(
(
p_obj
=
vlc_object_find
(
p_playlist
->
p_libvlc
,
VLC_OBJECT_VOUT
,
/* Remove video outputs when user presses stop: */
FIND_CHILD
)
)
)
vlc_list_t
*
list
=
vlc_list_find
(
p_playlist
->
p_libvlc
,
VLC_OBJECT_VOUT
,
FIND_CHILD
);
if
(
list
!=
NULL
)
{
{
vlc_object_release
(
p_obj
);
msg_Dbg
(
p_playlist
,
"removing %u vout(s)"
,
list
->
i_count
);
if
(
p_obj
->
p_parent
==
VLC_OBJECT
(
p_playlist
->
p_libvlc
)
)
for
(
int
i
=
0
;
i
<
list
->
i_count
;
i
++
)
{
vlc_object_release
(
list
->
p_values
[
i
].
p_object
);
msg_Dbg
(
p_playlist
,
"garbage collector destroying 1 vout"
);
vlc_list_release
(
list
);
vlc_object_release
(
p_obj
);
/* Hmm, is this (thread-)safe?? */
}
}
}
p_playlist
->
b_cant_sleep
=
false
;
p_playlist
->
b_cant_sleep
=
false
;
vlc_mutex_unlock
(
&
p_playlist
->
gc_lock
);
vlc_mutex_unlock
(
&
p_playlist
->
gc_lock
);
...
...
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