~ubuntu-branches/ubuntu/trusty/libsdl2/trusty-proposed

« back to all changes in this revision

Viewing changes to src/video/android/SDL_androidwindow.c

  • Committer: Package Import Robot
  • Author(s): Manuel A. Fernandez Montecelo
  • Date: 2013-12-28 12:31:19 UTC
  • mto: (7.1.3 sid)
  • mto: This revision was merged to the branch mainline in revision 7.
  • Revision ID: package-import@ubuntu.com-20131228123119-wehupm72qsjvh6vz
Tags: upstream-2.0.1+dfsg1
ImportĀ upstreamĀ versionĀ 2.0.1+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
#include "SDL_androidvideo.h"
30
30
#include "SDL_androidwindow.h"
31
31
 
32
 
#include "../../core/android/SDL_android.h"
33
 
 
34
32
int
35
33
Android_CreateWindow(_THIS, SDL_Window * window)
36
34
{
 
35
    SDL_WindowData *data;
 
36
    
37
37
    if (Android_Window) {
38
38
        return SDL_SetError("Android only supports one window");
39
39
    }
40
 
    Android_Window = window;
 
40
    
41
41
    Android_PauseSem = SDL_CreateSemaphore(0);
42
42
    Android_ResumeSem = SDL_CreateSemaphore(0);
43
43
 
56
56
    /* One window, it always has focus */
57
57
    SDL_SetMouseFocus(window);
58
58
    SDL_SetKeyboardFocus(window);
59
 
 
 
59
    
 
60
    data = (SDL_WindowData *) SDL_calloc(1, sizeof(*data));
 
61
    if (!data) {
 
62
        return SDL_OutOfMemory();
 
63
    }
 
64
    
 
65
    data->native_window = Android_JNI_GetNativeWindow();
 
66
    
 
67
    if (!data->native_window) {
 
68
        SDL_free(data);
 
69
        return SDL_SetError("Could not fetch native window");
 
70
    }
 
71
    
 
72
    data->egl_surface = SDL_EGL_CreateSurface(_this, (NativeWindowType) data->native_window);
 
73
 
 
74
    if (data->egl_surface == EGL_NO_SURFACE) {
 
75
        SDL_free(data);
 
76
        return SDL_SetError("Could not create GLES window surface");
 
77
    }
 
78
 
 
79
    window->driverdata = data;
 
80
    Android_Window = window;
 
81
    
60
82
    return 0;
61
83
}
62
84
 
69
91
void
70
92
Android_DestroyWindow(_THIS, SDL_Window * window)
71
93
{
 
94
    SDL_WindowData *data;
 
95
    
72
96
    if (window == Android_Window) {
73
97
        Android_Window = NULL;
74
98
        if (Android_PauseSem) SDL_DestroySemaphore(Android_PauseSem);
75
99
        if (Android_ResumeSem) SDL_DestroySemaphore(Android_ResumeSem);
76
100
        Android_PauseSem = NULL;
77
101
        Android_ResumeSem = NULL;
 
102
        
 
103
        if(window->driverdata) {
 
104
            data = (SDL_WindowData *) window->driverdata;
 
105
            if(data->native_window) {
 
106
                ANativeWindow_release(data->native_window);
 
107
            }
 
108
            SDL_free(window->driverdata);
 
109
            window->driverdata = NULL;
 
110
        }
78
111
    }
79
112
}
80
113