[vlc-commits] commit: Used vout_control_Push for vout_RegisterSubpictureChannel. ( Laurent Aimar )
git at videolan.org
git at videolan.org
Tue May 25 22:01:22 CEST 2010
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Tue May 25 21:54:45 2010 +0200| [38ed2e8ef37df763e187c1dca6b6a6c1da4887c4] | committer: Laurent Aimar
Used vout_control_Push for vout_RegisterSubpictureChannel.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=38ed2e8ef37df763e187c1dca6b6a6c1da4887c4
---
src/video_output/control.h | 2 ++
src/video_output/video_output.c | 19 ++++++++++++++++++-
2 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/src/video_output/control.h b/src/video_output/control.h
index 4654736..fc265e1 100644
--- a/src/video_output/control.h
+++ b/src/video_output/control.h
@@ -41,6 +41,7 @@ enum {
#endif
VOUT_CONTROL_SUBPICTURE, /* subpicture */
VOUT_CONTROL_FLUSH_SUBPICTURE, /* integer */
+ VOUT_CONTROL_REGISTER_SUBPICTURE, /* integer_ptr */
VOUT_CONTROL_OSD_TITLE, /* string */
VOUT_CONTROL_CHANGE_FILTERS, /* string */
VOUT_CONTROL_CHANGE_SUB_FILTERS, /* string */
@@ -70,6 +71,7 @@ typedef struct {
mtime_t *time_ptr;
char *string;
int integer;
+ int *integer_ptr;
struct {
int a;
int b;
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 7c1c8bd..b3f54d7 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -357,7 +357,16 @@ void vout_PutSubpicture( vout_thread_t *vout, subpicture_t *subpic )
}
int vout_RegisterSubpictureChannel( vout_thread_t *vout )
{
- return spu_RegisterChannel(vout->p->p_spu);
+ int channel = SPU_DEFAULT_CHANNEL;
+
+ vout_control_cmd_t cmd;
+ vout_control_cmd_Init(&cmd, VOUT_CONTROL_REGISTER_SUBPICTURE);
+ cmd.u.integer_ptr = &channel;
+
+ vout_control_Push(&vout->p->control, &cmd);
+ vout_control_WaitEmpty(&vout->p->control);
+
+ return channel;
}
void vout_FlushSubpictureChannel( vout_thread_t *vout, int channel )
{
@@ -760,6 +769,11 @@ static void ThreadDisplaySubpicture(vout_thread_t *vout,
spu_DisplaySubpicture(vout->p->p_spu, subpicture);
}
+static void ThreadRegisterSubpicture(vout_thread_t *vout, int *channel)
+{
+ *channel = spu_RegisterChannel(vout->p->p_spu);
+}
+
static void ThreadFlushSubpicture(vout_thread_t *vout, int channel)
{
spu_ClearChannel(vout->p->p_spu, channel);
@@ -1123,6 +1137,9 @@ static void *Thread(void *object)
case VOUT_CONTROL_FLUSH_SUBPICTURE:
ThreadFlushSubpicture(vout, cmd.u.integer);
break;
+ case VOUT_CONTROL_REGISTER_SUBPICTURE:
+ ThreadRegisterSubpicture(vout, cmd.u.integer_ptr);
+ break;
case VOUT_CONTROL_OSD_TITLE:
ThreadDisplayOsdTitle(vout, cmd.u.string);
break;
More information about the vlc-commits
mailing list