Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
0ff2efe2
Commit
0ff2efe2
authored
Aug 09, 2008
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Do not use vlc_thread_create for the IPC helper
parent
dc6854ec
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
19 deletions
+22
-19
src/libvlc.h
src/libvlc.h
+0
-4
src/misc/win32_specific.c
src/misc/win32_specific.c
+22
-15
No files found.
src/libvlc.h
View file @
0ff2efe2
...
...
@@ -259,10 +259,6 @@ typedef struct libvlc_priv_t
unsigned
threads_count
;
vlc_mutex_t
threads_lock
;
vlc_cond_t
threads_wait
;
#ifdef WIN32
vlc_object_t
*
ipc_helper
;
#endif
}
libvlc_priv_t
;
static
inline
libvlc_priv_t
*
libvlc_priv
(
libvlc_int_t
*
libvlc
)
...
...
src/misc/win32_specific.c
View file @
0ff2efe2
...
...
@@ -120,8 +120,11 @@ void system_Init( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv[] )
/*****************************************************************************
* system_Configure: check for system specific configuration options.
*****************************************************************************/
static
void
*
IPCHelperThread
(
vlc_object_t
*
);
static
unsigned
__stdcall
IPCHelperThread
(
void
*
);
LRESULT
CALLBACK
WMCOPYWNDPROC
(
HWND
,
UINT
,
WPARAM
,
LPARAM
);
static
vlc_object_t
*
p_helper
=
NULL
;
static
unsigned
long
hIPCHelper
;
typedef
struct
{
int
argc
;
...
...
@@ -149,8 +152,6 @@ void system_Configure( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv
}
}
libvlc_priv
(
p_this
)
->
ipc_helper
=
NULL
;
if
(
config_GetInt
(
p_this
,
"one-instance"
)
||
(
config_GetInt
(
p_this
,
"one-instance-when-started-from-file"
)
&&
config_GetInt
(
p_this
,
"started-from-file"
)
)
)
...
...
@@ -173,20 +174,25 @@ void system_Configure( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv
{
/* We are the 1st instance. */
static
const
char
typename
[]
=
"ipc helper"
;
vlc_object_t
*
p_helper
=
p_helper
=
vlc_custom_create
(
p_this
,
sizeof
(
vlc_object_t
),
VLC_OBJECT_GENERIC
,
typename
);
vlc_object_lock
(
p_helper
);
/* Run the helper thread */
if
(
vlc_thread_create
(
p_helper
,
"IPC helper"
,
IPCHelperThread
,
VLC_THREAD_PRIORITY_LOW
,
true
)
)
hIPCHelper
=
_beginthreadex
(
NULL
,
0
,
IPCHelperThread
,
p_helper
,
0
,
NULL
);
if
(
hIPCHelper
)
vlc_object_wait
(
p_helper
);
vlc_object_unlock
(
p_helper
);
if
(
!
hIPCHelper
)
{
msg_Err
(
p_this
,
"one instance mode DISABLED "
"(IPC helper thread couldn't be created)"
);
vlc_object_release
(
p_helper
);
p_helper
=
NULL
;
}
else
libvlc_priv
(
p_this
)
->
ipc_helper
=
p_helper
;
/* Initialization done.
* Release the mutex to unblock other instances */
...
...
@@ -262,8 +268,9 @@ void system_Configure( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv
#endif
}
static
void
*
IPCHelperThread
(
vlc_object_t
*
p_this
)
static
unsigned
__stdcall
IPCHelperThread
(
void
*
data
)
{
vlc_object_t
*
p_this
=
data
;
HWND
ipcwindow
;
MSG
message
;
...
...
@@ -284,14 +291,14 @@ static void* IPCHelperThread( vlc_object_t *p_this )
SetWindowLongPtr
(
ipcwindow
,
GWLP_USERDATA
,
(
LONG_PTR
)
p_this
);
/* Signal the creation of the thread and events queue */
vlc_
thread_ready
(
p_this
);
vlc_
object_signal
(
p_this
);
while
(
GetMessage
(
&
message
,
NULL
,
0
,
0
)
)
{
TranslateMessage
(
&
message
);
DispatchMessage
(
&
message
);
}
return
NULL
;
return
0
;
}
LRESULT
CALLBACK
WMCOPYWNDPROC
(
HWND
hwnd
,
UINT
uMsg
,
WPARAM
wParam
,
...
...
@@ -365,11 +372,11 @@ void system_End( libvlc_int_t *p_this )
free
(
vlc_global
()
->
psz_vlcpath
);
vlc_global
()
->
psz_vlcpath
=
NULL
;
}
vlc_object_t
*
obj
=
libvlc_priv
(
p_this
)
->
ipc_helper
;
if
(
obj
)
if
(
p_helper
&&
p_helper
->
p_parent
==
VLC_OBJECT
(
p_this
)
)
{
vlc_thread_join
(
obj
);
vlc_object_release
(
obj
);
/* FIXME: thread-safety + join the thread(?)... */
vlc_object_release
(
p_helper
);
p_helper
=
NULL
;
}
#if !defined( UNDER_CE )
...
...
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