From: Laurent Aimar Date: Tue, 25 May 2010 19:54:45 +0000 (+0200) Subject: Used vout_control_Push for vout_RegisterSubpictureChannel. X-Git-Tag: 1.2.0-pre1~6500 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=38ed2e8ef37df763e187c1dca6b6a6c1da4887c4;p=vlc Used vout_control_Push for vout_RegisterSubpictureChannel. --- diff --git a/src/video_output/control.h b/src/video_output/control.h index 4654736a8d..fc265e1fa8 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 7c1c8bd8bf..b3f54d7512 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;