diff --git a/test/test-input/test-desktop.m b/test/test-input/test-desktop.m index 41026e31e..bcd508bb9 100644 --- a/test/test-input/test-desktop.m +++ b/test/test-input/test-desktop.m @@ -39,6 +39,12 @@ static void destroy_display_stream(struct display_capture *dc) dc->current = NULL; } + if (dc->prev) { + IOSurfaceDecrementUseCount(dc->prev); + CFRelease(dc->prev); + dc->prev = NULL; + } + if (dc->disp) { CFRelease(dc->disp); dc->disp = NULL; @@ -182,13 +188,19 @@ static void display_capture_video_render(void *data, effect_t effect) pthread_mutex_lock(&dc->mutex); - if (dc->prev != dc->current) { + if (dc->current && dc->prev != dc->current) { if (dc->tex) texture_rebind_iosurface(dc->tex, dc->current); else dc->tex = gs_create_texture_from_iosurface( dc->current); + + if (dc->prev) { + IOSurfaceDecrementUseCount(dc->prev); + CFRelease(dc->prev); + } dc->prev = dc->current; + dc->current = NULL; } if (!dc->tex) goto fail;