src/video/wayland/SDL_waylandopengles.c
author Ryan C. Gordon
Mon, 23 Jan 2017 12:06:10 -0500
changeset 10837 c2f241c2f6ad
parent 10737 3406a0f8b041
child 11175 cbc6a8a5b701
permissions -rw-r--r--
audio: Fix same bug as last commit, but for _mm_bslli_si128 vs _mm_slli_si128.
gabomdq@8062
     1
/*
gabomdq@8062
     2
  Simple DirectMedia Layer
slouken@10737
     3
  Copyright (C) 1997-2017 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
slouken@10695
    57
int
gabomdq@8062
    58
Wayland_GLES_SwapWindow(_THIS, SDL_Window *window)
gabomdq@8062
    59
{
slouken@10695
    60
    if (SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface) < 0) {
slouken@10695
    61
        return -1;
slouken@10695
    62
    }
gabomdq@8104
    63
    WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
slouken@10695
    64
    return 0;
gabomdq@8062
    65
}
gabomdq@8062
    66
gabomdq@8062
    67
int
gabomdq@8062
    68
Wayland_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
gabomdq@8062
    69
{
gabomdq@8062
    70
    int ret;
gabomdq@8062
    71
    
gabomdq@8062
    72
    if (window && context) {
gabomdq@8062
    73
        ret = SDL_EGL_MakeCurrent(_this, ((SDL_WindowData *) window->driverdata)->egl_surface, context);
gabomdq@8062
    74
    }
gabomdq@8062
    75
    else {
gabomdq@8062
    76
        ret = SDL_EGL_MakeCurrent(_this, NULL, NULL);
gabomdq@8062
    77
    }
gabomdq@8062
    78
    
gabomdq@8104
    79
    WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
gabomdq@8062
    80
    
gabomdq@8062
    81
    return ret;
gabomdq@8062
    82
}
gabomdq@8062
    83
gabomdq@8062
    84
void 
gabomdq@8062
    85
Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context)
gabomdq@8062
    86
{
gabomdq@8062
    87
    SDL_EGL_DeleteContext(_this, context);
gabomdq@8104
    88
    WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
gabomdq@8062
    89
}
gabomdq@8062
    90
gabomdq@8062
    91
#endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */
gabomdq@8062
    92
slouken@8149
    93
/* vi: set ts=4 sw=4 expandtab: */