diff options
author | wm4 <wm4@nowhere> | 2012-12-31 17:12:38 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-01-13 20:04:14 +0100 |
commit | dd89c542e3364bd4f9294c3ac5bcbfb6b0f16594 (patch) | |
tree | 259fca6ff858d8a91907ded7c0bc15bfbc8498a2 /video/out/vo_sdl.c | |
parent | bd6470ec6a5cc6e729257a0fd737ef5ef25aa544 (diff) | |
download | mpv-dd89c542e3364bd4f9294c3ac5bcbfb6b0f16594.tar.bz2 mpv-dd89c542e3364bd4f9294c3ac5bcbfb6b0f16594.tar.xz |
vo_sdl: avoid copying just for taking screenshots
Use reference counting instead.
Diffstat (limited to 'video/out/vo_sdl.c')
-rw-r--r-- | video/out/vo_sdl.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/video/out/vo_sdl.c b/video/out/vo_sdl.c index d760aff50c..b4d88eb341 100644 --- a/video/out/vo_sdl.c +++ b/video/out/vo_sdl.c @@ -450,8 +450,6 @@ static int config(struct vo *vo, uint32_t width, uint32_t height, return -1; } - vc->ssmpi = mp_image_alloc(format, width, height); - resize(vo, d_width, d_height); SDL_DisableScreenSaver(); @@ -899,6 +897,8 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) mp_image_copy(texmpi, mpi); SDL_UnlockTexture(vc->tex); + + mp_image_setrefp(&vc->ssmpi, mpi); } SDL_Rect src, dst; @@ -920,8 +920,6 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) SDL_SetTextureColorMod(vc->tex, color_mod, color_mod, color_mod); SDL_RenderCopy(vc->renderer, vc->tex, &src, &dst); } - if (mpi) - mp_image_copy(vc->ssmpi, mpi); } static void update_screeninfo(struct vo *vo) @@ -942,7 +940,7 @@ static void update_screeninfo(struct vo *vo) static struct mp_image *get_screenshot(struct vo *vo) { struct priv *vc = vo->priv; - return mp_image_new_copy(vc->ssmpi); + return vc->ssmpi ? mp_image_new_ref(vc->ssmpi) : NULL; } static struct mp_image *get_window_screenshot(struct vo *vo) |