Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
Commits
a98cae25
Commit
a98cae25
authored
Feb 01, 2011
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
signals: ugly and unsafe kludge to run the QProcess SIGCHLD handler
parent
faca3a7a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
1 deletion
+28
-1
configure.ac
configure.ac
+1
-1
modules/control/signals.c
modules/control/signals.c
+27
-0
No files found.
configure.ac
View file @
a98cae25
...
...
@@ -771,7 +771,7 @@ if test "${ac_cv_have_plugins}" = "no" -o "${SYS}" = "darwin"; then
if test "${ac_cv_my_have_dlopen}" = "yes"; then
AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
ac_cv_have_plugins=yes
VLC_ADD_LIBS([libvlccore realvideo lua],[$LIBDL])
VLC_ADD_LIBS([libvlccore realvideo lua
signals
],[$LIBDL])
fi
fi
AC_SUBST(LIBDL)
...
...
modules/control/signals.c
View file @
a98cae25
...
...
@@ -28,6 +28,9 @@
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_interface.h>
#ifdef __GLIBC__
# include <dlfcn.h>
#endif
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
...
...
@@ -118,6 +121,30 @@ static void *SigThread (void *data)
* cancellation point */
vlc_testcancel
();
#endif
/* Hack for Qt QProcess */
if
(
signum
==
SIGCHLD
)
{
struct
sigaction
act
;
sigaction
(
signum
,
NULL
,
&
act
);
if
((
act
.
sa_flags
&
SA_SIGINFO
)
||
(
act
.
sa_handler
!=
SIG_DFL
))
{
msg_Err
(
obj
,
"signal %d overriden (%p)"
,
signum
,
act
.
sa_handler
);
#ifdef __GLIBC__
Dl_info
info
;
if
(
dladdr
(
act
.
sa_handler
,
&
info
))
msg_Err
(
obj
,
" %s(%s)[%p]"
,
info
.
dli_fname
?
info
.
dli_fname
:
"?"
,
info
.
dli_sname
?
info
.
dli_sname
:
"?"
,
info
.
dli_saddr
);
#endif
if
(
!
(
act
.
sa_flags
&
SA_SIGINFO
)
&&
(
act
.
sa_handler
!=
SIG_IGN
))
act
.
sa_handler
(
signum
);
}
}
}
while
(
signum
==
SIGCHLD
);
...
...
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