Commit fec5777e authored by Marton Balint's avatar Marton Balint Committed by Janne Grunau

avplay: fix fullscreen behaviour with SDL 1.2.14 on Mac OS X

The blue channel went missing when toggling fullscreen on Mac OS X.
parent f4b51d06
...@@ -103,6 +103,7 @@ typedef struct VideoPicture { ...@@ -103,6 +103,7 @@ typedef struct VideoPicture {
SDL_Overlay *bmp; SDL_Overlay *bmp;
int width, height; /* source height & width */ int width, height; /* source height & width */
int allocated; int allocated;
int reallocate;
enum PixelFormat pix_fmt; enum PixelFormat pix_fmt;
#if CONFIG_AVFILTER #if CONFIG_AVFILTER
...@@ -1339,7 +1340,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts, int64_t ...@@ -1339,7 +1340,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts, int64_t
vp = &is->pictq[is->pictq_windex]; vp = &is->pictq[is->pictq_windex];
/* alloc or resize hardware picture buffer */ /* alloc or resize hardware picture buffer */
if (!vp->bmp || if (!vp->bmp || vp->reallocate ||
#if CONFIG_AVFILTER #if CONFIG_AVFILTER
vp->width != is->out_video_filter->inputs[0]->w || vp->width != is->out_video_filter->inputs[0]->w ||
vp->height != is->out_video_filter->inputs[0]->h) { vp->height != is->out_video_filter->inputs[0]->h) {
...@@ -1349,7 +1350,8 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts, int64_t ...@@ -1349,7 +1350,8 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts, int64_t
#endif #endif
SDL_Event event; SDL_Event event;
vp->allocated = 0; vp->allocated = 0;
vp->reallocate = 0;
/* the allocation must be done in the main thread to avoid /* the allocation must be done in the main thread to avoid
locking problems */ locking problems */
...@@ -2681,6 +2683,12 @@ static void stream_cycle_channel(VideoState *is, int codec_type) ...@@ -2681,6 +2683,12 @@ static void stream_cycle_channel(VideoState *is, int codec_type)
static void toggle_full_screen(void) static void toggle_full_screen(void)
{ {
is_full_screen = !is_full_screen; is_full_screen = !is_full_screen;
#if defined(__APPLE__) && SDL_VERSION_ATLEAST(1, 2, 14)
/* OSX needs to empty the picture_queue */
for (int i = 0; i < VIDEO_PICTURE_QUEUE_SIZE; i++) {
cur_stream->pictq[i].reallocate = 1;
}
#endif
video_open(cur_stream); video_open(cur_stream);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment