src/video/wayland/SDL_waylandopengles.c
author Gabriel Jacobo <gabomdq@gmail.com>
Thu, 09 Jan 2014 13:56:21 -0300
changeset 8104 2e4f1bd21196
parent 8062 4fc5f66d63cc
child 8149 681eb46b8ac4
permissions -rw-r--r--
Dynamic loading support for Wayland
gabomdq@8062
     1
/*
gabomdq@8062
     2
  Simple DirectMedia Layer
gabomdq@8062
     3
  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
gabomdq@8062
     4
gabomdq@8062
     5
  This software is provided 'as-is', without any express or implied
gabomdq@8062
     6
  warranty.  In no event will the authors be held liable for any damages
gabomdq@8062
     7
  arising from the use of this software.
gabomdq@8062
     8
gabomdq@8062
     9
  Permission is granted to anyone to use this software for any purpose,
gabomdq@8062
    10
  including commercial applications, and to alter it and redistribute it
gabomdq@8062
    11
  freely, subject to the following restrictions:
gabomdq@8062
    12
gabomdq@8062
    13
  1. The origin of this software must not be misrepresented; you must not
gabomdq@8062
    14
     claim that you wrote the original software. If you use this software
gabomdq@8062
    15
     in a product, an acknowledgment in the product documentation would be
gabomdq@8062
    16
     appreciated but is not required.
gabomdq@8062
    17
  2. Altered source versions must be plainly marked as such, and must not be
gabomdq@8062
    18
     misrepresented as being the original software.
gabomdq@8062
    19
  3. This notice may not be removed or altered from any source distribution.
gabomdq@8062
    20
*/
gabomdq@8104
    21
#include "../../SDL_internal.h"
gabomdq@8062
    22
gabomdq@8062
    23
#if SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL
gabomdq@8062
    24
gabomdq@8062
    25
#include "SDL_waylandvideo.h"
gabomdq@8062
    26
#include "SDL_waylandopengles.h"
gabomdq@8062
    27
#include "SDL_waylandwindow.h"
gabomdq@8062
    28
#include "SDL_waylandevents_c.h"
gabomdq@8104
    29
#include "SDL_waylanddyn.h"
gabomdq@8062
    30
gabomdq@8062
    31
/* EGL implementation of SDL OpenGL ES support */
gabomdq@8062
    32
gabomdq@8062
    33
int
gabomdq@8062
    34
Wayland_GLES_LoadLibrary(_THIS, const char *path) {
gabomdq@8062
    35
    int ret;
gabomdq@8062
    36
    SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
gabomdq@8062
    37
    
gabomdq@8062
    38
    ret = SDL_EGL_LoadLibrary(_this, path, (NativeDisplayType) data->display);
gabomdq@8062
    39
gabomdq@8062
    40
    Wayland_PumpEvents(_this);
gabomdq@8104
    41
    WAYLAND_wl_display_flush(data->display);
gabomdq@8062
    42
    
gabomdq@8062
    43
    return ret;
gabomdq@8062
    44
}
gabomdq@8062
    45
gabomdq@8062
    46
gabomdq@8062
    47
SDL_GLContext
gabomdq@8062
    48
Wayland_GLES_CreateContext(_THIS, SDL_Window * window)
gabomdq@8062
    49
{
gabomdq@8062
    50
    SDL_GLContext context;
gabomdq@8062
    51
    context = SDL_EGL_CreateContext(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);
gabomdq@8104
    52
    WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
gabomdq@8062
    53
    
gabomdq@8062
    54
    return context;
gabomdq@8062
    55
}
gabomdq@8062
    56
gabomdq@8062
    57
void
gabomdq@8062
    58
Wayland_GLES_SwapWindow(_THIS, SDL_Window *window)
gabomdq@8062
    59
{
gabomdq@8062
    60
    SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);
gabomdq@8104
    61
    WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
gabomdq@8062
    62
}
gabomdq@8062
    63
gabomdq@8062
    64
gabomdq@8062
    65
int
gabomdq@8062
    66
Wayland_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
gabomdq@8062
    67
{
gabomdq@8062
    68
    int ret;
gabomdq@8062
    69
    
gabomdq@8062
    70
    if (window && context) {
gabomdq@8062
    71
        ret = SDL_EGL_MakeCurrent(_this, ((SDL_WindowData *) window->driverdata)->egl_surface, context);
gabomdq@8062
    72
    }
gabomdq@8062
    73
    else {
gabomdq@8062
    74
        ret = SDL_EGL_MakeCurrent(_this, NULL, NULL);
gabomdq@8062
    75
    }
gabomdq@8062
    76
    
gabomdq@8104
    77
    WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
gabomdq@8062
    78
    
gabomdq@8062
    79
    return ret;
gabomdq@8062
    80
}
gabomdq@8062
    81
gabomdq@8062
    82
void 
gabomdq@8062
    83
Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context)
gabomdq@8062
    84
{
gabomdq@8062
    85
    SDL_EGL_DeleteContext(_this, context);
gabomdq@8104
    86
    WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
gabomdq@8062
    87
}
gabomdq@8062
    88
gabomdq@8062
    89
#endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */
gabomdq@8062
    90
gabomdq@8062
    91
/* vi: set ts=4 sw=4 expandtab: */