src/video/vivante/SDL_vivantevideo.h
author Sam Lantinga
Fri, 27 Jan 2017 21:23:27 -0800
changeset 10861 71d8f9afb690
parent 10737 3406a0f8b041
child 11382 2c50e79b19e0
permissions -rw-r--r--
Fixed bug 3569 - GL_UpdateViewport leaves PROJECTION matrix selected

Tom Seddon

GL_ActivateRenderer may call GL_UpdateViewport, which leaves the GL_PROJECTION matrix selected. But after GL_ResetState, the GL_MODELVIEW matrix is selected, suggesting that's the intended default state.

It seems at least like these should be consistent. Presumably GL_UpdateViewport should be doing a glMatrixMode(GL_MODELVIEW) before it finishes.
slouken@9164
     1
/*
slouken@9164
     2
  Simple DirectMedia Layer
slouken@10737
     3
  Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
slouken@9164
     4
slouken@9164
     5
  This software is provided 'as-is', without any express or implied
slouken@9164
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@9164
     7
  arising from the use of this software.
slouken@9164
     8
slouken@9164
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@9164
    10
  including commercial applications, and to alter it and redistribute it
slouken@9164
    11
  freely, subject to the following restrictions:
slouken@9164
    12
slouken@9164
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@9164
    14
     claim that you wrote the original software. If you use this software
slouken@9164
    15
     in a product, an acknowledgment in the product documentation would be
slouken@9164
    16
     appreciated but is not required.
slouken@9164
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@9164
    18
     misrepresented as being the original software.
slouken@9164
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@9164
    20
*/
slouken@9164
    21
slouken@9164
    22
#ifndef _SDL_vivantevideo_h
slouken@9164
    23
#define _SDL_vivantevideo_h
slouken@9164
    24
slouken@9164
    25
#include "../../SDL_internal.h"
slouken@9164
    26
#include "../SDL_sysvideo.h"
slouken@9164
    27
slouken@9164
    28
#include "SDL_egl.h"
slouken@9164
    29
slouken@9164
    30
#if SDL_VIDEO_DRIVER_VIVANTE_VDK
slouken@9164
    31
#include <gc_vdk.h>
slouken@9164
    32
#else
slouken@9164
    33
#include <EGL/egl.h>
slouken@9164
    34
#endif
slouken@9164
    35
slouken@9164
    36
typedef struct SDL_VideoData
slouken@9164
    37
{
slouken@9164
    38
#if SDL_VIDEO_DRIVER_VIVANTE_VDK
slouken@9164
    39
    vdkPrivate vdk_private;
slouken@9164
    40
#else
slouken@9164
    41
    void *egl_handle; /* EGL shared library handle */
slouken@9164
    42
    EGLNativeDisplayType (EGLAPIENTRY *fbGetDisplay)(void *context);
slouken@9164
    43
    EGLNativeDisplayType (EGLAPIENTRY *fbGetDisplayByIndex)(int DisplayIndex);
slouken@9164
    44
    void (EGLAPIENTRY *fbGetDisplayGeometry)(EGLNativeDisplayType Display, int *Width, int *Height);
slouken@9164
    45
    void (EGLAPIENTRY *fbGetDisplayInfo)(EGLNativeDisplayType Display, int *Width, int *Height, unsigned long *Physical, int *Stride, int *BitsPerPixel);
slouken@9164
    46
    void (EGLAPIENTRY *fbDestroyDisplay)(EGLNativeDisplayType Display);
slouken@9164
    47
    EGLNativeWindowType (EGLAPIENTRY *fbCreateWindow)(EGLNativeDisplayType Display, int X, int Y, int Width, int Height);
slouken@9164
    48
    void (EGLAPIENTRY *fbGetWindowGeometry)(EGLNativeWindowType Window, int *X, int *Y, int *Width, int *Height);
slouken@9164
    49
    void (EGLAPIENTRY *fbGetWindowInfo)(EGLNativeWindowType Window, int *X, int *Y, int *Width, int *Height, int *BitsPerPixel, unsigned int *Offset);
slouken@9164
    50
    void (EGLAPIENTRY *fbDestroyWindow)(EGLNativeWindowType Window);
slouken@9164
    51
#endif
slouken@9164
    52
} SDL_VideoData;
slouken@9164
    53
slouken@9164
    54
typedef struct SDL_DisplayData
slouken@9164
    55
{
slouken@9164
    56
    EGLNativeDisplayType native_display;
slouken@9164
    57
} SDL_DisplayData;
slouken@9164
    58
slouken@9164
    59
typedef struct SDL_WindowData
slouken@9164
    60
{
slouken@9164
    61
    EGLNativeWindowType native_window;
slouken@9164
    62
    EGLSurface egl_surface;
slouken@9164
    63
} SDL_WindowData;
slouken@9164
    64
slouken@9164
    65
/****************************************************************************/
slouken@9164
    66
/* SDL_VideoDevice functions declaration                                    */
slouken@9164
    67
/****************************************************************************/
slouken@9164
    68
slouken@9164
    69
/* Display and window functions */
slouken@9164
    70
int VIVANTE_VideoInit(_THIS);
slouken@9164
    71
void VIVANTE_VideoQuit(_THIS);
slouken@9164
    72
void VIVANTE_GetDisplayModes(_THIS, SDL_VideoDisplay * display);
slouken@9164
    73
int VIVANTE_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
slouken@9164
    74
int VIVANTE_CreateWindow(_THIS, SDL_Window * window);
slouken@9164
    75
void VIVANTE_SetWindowTitle(_THIS, SDL_Window * window);
slouken@9164
    76
void VIVANTE_SetWindowPosition(_THIS, SDL_Window * window);
slouken@9164
    77
void VIVANTE_SetWindowSize(_THIS, SDL_Window * window);
slouken@9164
    78
void VIVANTE_ShowWindow(_THIS, SDL_Window * window);
slouken@9164
    79
void VIVANTE_HideWindow(_THIS, SDL_Window * window);
slouken@9164
    80
void VIVANTE_DestroyWindow(_THIS, SDL_Window * window);
slouken@9164
    81
slouken@9164
    82
/* Window manager function */
slouken@9164
    83
SDL_bool VIVANTE_GetWindowWMInfo(_THIS, SDL_Window * window,
slouken@9164
    84
                             struct SDL_SysWMinfo *info);
slouken@9164
    85
slouken@9164
    86
/* Event functions */
slouken@9164
    87
void VIVANTE_PumpEvents(_THIS);
slouken@9164
    88
slouken@9164
    89
#endif /* _SDL_vivantevideo_h */
slouken@9164
    90
slouken@9164
    91
/* vi: set ts=4 sw=4 expandtab: */