aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-10-22 16:38:03 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-10-22 16:38:16 +0200
commit9ab5e64897b341044d3b39c6f941630e214a9766 (patch)
tree9054b9cfc1f4f2ee29a2bc13fc02da1c311b5c66
parentd8cae42d72092501be880348ae0c223d2ea220a2 (diff)
parent8085a5b7cdcc91bc9e2d52be04dea6c24759d732 (diff)
downloadffmpeg-9ab5e64897b341044d3b39c6f941630e214a9766.tar.gz
Merge remote-tracking branch 'cus/stable'
* cus/stable: ffplay: reallocate SDL overlays for OSX when changing full screen Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--ffplay.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ffplay.c b/ffplay.c
index b41820c51b..6ae05159cb 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -102,6 +102,7 @@ typedef struct VideoPicture {
SDL_Overlay *bmp;
int width, height; /* source height & width */
int allocated;
+ int reallocate;
enum PixelFormat pix_fmt;
#if CONFIG_AVFILTER
@@ -1338,7 +1339,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
vp->duration = frame_delay;
/* alloc or resize hardware picture buffer */
- if (!vp->bmp ||
+ if (!vp->bmp || vp->reallocate ||
#if CONFIG_AVFILTER
vp->width != is->out_video_filter->inputs[0]->w ||
vp->height != is->out_video_filter->inputs[0]->h) {
@@ -1349,6 +1350,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
SDL_Event event;
vp->allocated = 0;
+ vp->reallocate = 0;
/* the allocation must be done in the main thread to avoid
locking problems */
@@ -2703,6 +2705,12 @@ static void stream_cycle_channel(VideoState *is, int codec_type)
static void toggle_full_screen(VideoState *is)
{
is_full_screen = !is_full_screen;
+#if defined(__APPLE__) && SDL_VERSION_ATLEAST(1, 2, 14)
+ /* OSX needs to reallocate the SDL overlays */
+ for (int i = 0; i < VIDEO_PICTURE_QUEUE_SIZE; i++) {
+ is->pictq[i].reallocate = 1;
+ }
+#endif
video_open(is);
}