src/video/raspberry/SDL_rpiopengles.c
changeset 11694 2ce56475ad57
parent 11444 38f181f81476
child 11811 5d94cb6b24d3
equal deleted inserted replaced
11693:4c8bd26f1aab 11694:2ce56475ad57
    17   2. Altered source versions must be plainly marked as such, and must not be
    17   2. Altered source versions must be plainly marked as such, and must not be
    18      misrepresented as being the original software.
    18      misrepresented as being the original software.
    19   3. This notice may not be removed or altered from any source distribution.
    19   3. This notice may not be removed or altered from any source distribution.
    20 */
    20 */
    21 #include "../../SDL_internal.h"
    21 #include "../../SDL_internal.h"
       
    22 #include "SDL_hints.h"
       
    23 #include "SDL_log.h"
    22 
    24 
    23 #if SDL_VIDEO_DRIVER_RPI && SDL_VIDEO_OPENGL_EGL
    25 #if SDL_VIDEO_DRIVER_RPI && SDL_VIDEO_OPENGL_EGL
    24 
    26 
    25 #include "SDL_rpivideo.h"
    27 #include "SDL_rpivideo.h"
    26 #include "SDL_rpiopengles.h"
    28 #include "SDL_rpiopengles.h"
    38 int
    40 int
    39 RPI_GLES_LoadLibrary(_THIS, const char *path) {
    41 RPI_GLES_LoadLibrary(_THIS, const char *path) {
    40     return SDL_EGL_LoadLibrary(_this, path, EGL_DEFAULT_DISPLAY, 0);
    42     return SDL_EGL_LoadLibrary(_this, path, EGL_DEFAULT_DISPLAY, 0);
    41 }
    43 }
    42 
    44 
       
    45 int
       
    46 RPI_GLES_SwapWindow(_THIS, SDL_Window * window) {
       
    47     SDL_WindowData *wdata = ((SDL_WindowData *) window->driverdata);
       
    48 
       
    49     if (!(_this->egl_data->eglSwapBuffers(_this->egl_data->egl_display, wdata->egl_surface))) {
       
    50         SDL_LogError(SDL_LOG_CATEGORY_VIDEO, "eglSwapBuffers failed.");
       
    51         return 0;
       
    52     }
       
    53 
       
    54     /* Wait immediately for vsync (as if we only had two buffers), for low input-lag scenarios.
       
    55      * Run your SDL2 program with "SDL_RPI_DOUBLE_BUFFER=1 <program_name>" to enable this. */
       
    56     if (wdata->double_buffer) {
       
    57         SDL_LockMutex(wdata->vsync_cond_mutex);
       
    58         SDL_CondWait(wdata->vsync_cond, wdata->vsync_cond_mutex);
       
    59         SDL_UnlockMutex(wdata->vsync_cond_mutex);
       
    60     }
       
    61 
       
    62     return 0;
       
    63 }
       
    64 
    43 SDL_EGL_CreateContext_impl(RPI)
    65 SDL_EGL_CreateContext_impl(RPI)
    44 SDL_EGL_SwapWindow_impl(RPI)
       
    45 SDL_EGL_MakeCurrent_impl(RPI)
    66 SDL_EGL_MakeCurrent_impl(RPI)
    46 
    67 
    47 #endif /* SDL_VIDEO_DRIVER_RPI && SDL_VIDEO_OPENGL_EGL */
    68 #endif /* SDL_VIDEO_DRIVER_RPI && SDL_VIDEO_OPENGL_EGL */
    48 
    69 
    49 /* vi: set ts=4 sw=4 expandtab: */
    70 /* vi: set ts=4 sw=4 expandtab: */