From e750ea40b6eac03657f88b4adccaf503593dfa40 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 13 Mar 2019 08:28:58 +0100 Subject: [PATCH] examples/sdlshare: Initialize GL as part of the event loop And unref additional buffers we never use for rendering directly instead of going via the output queue. --- tests/examples/gl/sdl/sdlshare.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/examples/gl/sdl/sdlshare.c b/tests/examples/gl/sdl/sdlshare.c index 8a5512f..441c1d6 100644 --- a/tests/examples/gl/sdl/sdlshare.c +++ b/tests/examples/gl/sdl/sdlshare.c @@ -216,6 +216,8 @@ sdl_event_loop (GstBus * bus) SDL_GL_MakeCurrent (sdl_window, sdl_gl_context); SDL_GL_SetSwapInterval (1); + InitGL (640, 480); + while (!quit) { SDL_Event event; @@ -270,9 +272,14 @@ sdl_event_loop (GstBus * bus) } } + if (buf) { + g_async_queue_push (queue_output_buf, buf); + buf = NULL; + } + while (g_async_queue_length (queue_input_buf) > 3) { if (buf) - g_async_queue_push (queue_output_buf, buf); + gst_buffer_unref (buf); buf = (GstBuffer *) g_async_queue_pop (queue_input_buf); } @@ -329,13 +336,11 @@ main (int argc, char **argv) return -1; } + /* Create GL context and a wrapped GStreamer context around it */ sdl_gl_context = SDL_GL_CreateContext (sdl_window); SDL_GL_MakeCurrent (sdl_window, sdl_gl_context); - /* Loop, drawing and checking events */ - InitGL (640, 480); - #ifdef WIN32 gl_context = wglGetCurrentContext (); sdl_dc = wglGetCurrentDC (); -- 2.7.4