mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Properly resize the GL canvas on window changes with USE_WX and wx 2.9.
Fixes issue 2524. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6803 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -155,7 +155,7 @@ bool CWII_IPC_HLE_Device_fs::IOCtlV(u32 _CommandAddress)
|
|||||||
if ((CommandBuffer.InBuffer.size() == 1) && (CommandBuffer.PayloadBuffer.size() == 1))
|
if ((CommandBuffer.InBuffer.size() == 1) && (CommandBuffer.PayloadBuffer.size() == 1))
|
||||||
{
|
{
|
||||||
size_t numFile = FileSearch.GetFileNames().size();
|
size_t numFile = FileSearch.GetFileNames().size();
|
||||||
INFO_LOG(WII_IPC_FILEIO, "\t%lu Files found", (u32)numFile);
|
INFO_LOG(WII_IPC_FILEIO, "\t%lu Files found", (unsigned long)numFile);
|
||||||
|
|
||||||
Memory::Write_U32((u32)numFile, CommandBuffer.PayloadBuffer[0].m_Address);
|
Memory::Write_U32((u32)numFile, CommandBuffer.PayloadBuffer[0].m_Address);
|
||||||
}
|
}
|
||||||
|
@ -323,22 +323,13 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
|
|||||||
g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay;
|
g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay;
|
||||||
|
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0};
|
|
||||||
|
|
||||||
wxSize size(_twidth, _theight);
|
|
||||||
|
|
||||||
GLWin.panel = (wxPanel *)g_VideoInitialize.pWindowHandle;
|
GLWin.panel = (wxPanel *)g_VideoInitialize.pWindowHandle;
|
||||||
|
GLWin.glCanvas = new wxGLCanvas(GLWin.panel, wxID_ANY, NULL,
|
||||||
GLWin.glCanvas = new wxGLCanvas(GLWin.panel, wxID_ANY, args,
|
wxPoint(0, 0), wxSize(_twidth, _theight));
|
||||||
wxPoint(0,0), size, wxSUNKEN_BORDER);
|
|
||||||
GLWin.glCtxt = new wxGLContext(GLWin.glCanvas);
|
GLWin.glCtxt = new wxGLContext(GLWin.glCanvas);
|
||||||
GLWin.glCanvas->Show(TRUE);
|
GLWin.glCanvas->Show(true);
|
||||||
|
|
||||||
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
|
|
||||||
|
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
GLWin.width = s_backbuffer_width;
|
|
||||||
GLWin.height = s_backbuffer_height;
|
|
||||||
GLWin.cocoaWin = cocoaGLCreateWindow(GLWin.width, GLWin.height);
|
GLWin.cocoaWin = cocoaGLCreateWindow(GLWin.width, GLWin.height);
|
||||||
GLWin.cocoaCtx = cocoaGLInit(g_Config.iMultisampleMode);
|
GLWin.cocoaCtx = cocoaGLInit(g_Config.iMultisampleMode);
|
||||||
|
|
||||||
@ -500,9 +491,17 @@ bool OpenGL_MakeCurrent()
|
|||||||
void OpenGL_Update()
|
void OpenGL_Update()
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
GLWin.glCanvas->GetSize((int *)&GLWin.width, (int *)&GLWin.height);
|
int width, height;
|
||||||
s_backbuffer_width = GLWin.width;
|
|
||||||
s_backbuffer_height = GLWin.height;
|
GLWin.panel->GetSize(&width, &height);
|
||||||
|
if (width == s_backbuffer_width && height == s_backbuffer_height)
|
||||||
|
return;
|
||||||
|
|
||||||
|
GLWin.glCanvas->SetSize(0, 0, width, height);
|
||||||
|
GLWin.glCtxt->SetCurrent(*GLWin.glCanvas);
|
||||||
|
s_backbuffer_width = width;
|
||||||
|
s_backbuffer_height = height;
|
||||||
|
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
|
|
||||||
// Is anything needed here?
|
// Is anything needed here?
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include <GL/wglew.h>
|
#include <GL/wglew.h>
|
||||||
|
|
||||||
#else // linux and apple basic definitions
|
#else
|
||||||
|
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
@ -47,13 +47,13 @@
|
|||||||
#include "cocoaGL.h"
|
#include "cocoaGL.h"
|
||||||
#endif // end USE_WX
|
#endif // end USE_WX
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#ifdef __APPLE__
|
||||||
#include <OpenGL/gl.h>
|
#include <OpenGL/gl.h>
|
||||||
#else
|
#else
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // linux basic definitions
|
#endif
|
||||||
|
|
||||||
#ifndef GL_DEPTH24_STENCIL8_EXT // allows FBOs to support stencils
|
#ifndef GL_DEPTH24_STENCIL8_EXT // allows FBOs to support stencils
|
||||||
#define GL_DEPTH_STENCIL_EXT 0x84F9
|
#define GL_DEPTH_STENCIL_EXT 0x84F9
|
||||||
@ -69,8 +69,8 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
wxGLCanvas *glCanvas;
|
wxGLCanvas *glCanvas;
|
||||||
wxPanel *panel;
|
|
||||||
wxGLContext *glCtxt;
|
wxGLContext *glCtxt;
|
||||||
|
wxPanel *panel;
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
NSWindow *cocoaWin;
|
NSWindow *cocoaWin;
|
||||||
NSOpenGLContext *cocoaCtx;
|
NSOpenGLContext *cocoaCtx;
|
||||||
@ -87,8 +87,8 @@ typedef struct {
|
|||||||
XSetWindowAttributes attr;
|
XSetWindowAttributes attr;
|
||||||
Common::Thread *xEventThread;
|
Common::Thread *xEventThread;
|
||||||
int x, y;
|
int x, y;
|
||||||
#endif
|
|
||||||
unsigned int width, height;
|
unsigned int width, height;
|
||||||
|
#endif
|
||||||
} GLWindow;
|
} GLWindow;
|
||||||
|
|
||||||
extern GLWindow GLWin;
|
extern GLWindow GLWin;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#ifdef __APPLE__
|
||||||
#include <OpenGL/gl.h>
|
#include <OpenGL/gl.h>
|
||||||
#else
|
#else
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
|
@ -118,19 +118,11 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight
|
|||||||
g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay;
|
g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay;
|
||||||
|
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
|
|
||||||
int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0};
|
|
||||||
|
|
||||||
wxSize size(_twidth, _theight);
|
|
||||||
|
|
||||||
GLWin.panel = (wxPanel *)g_VideoInitialize.pWindowHandle;
|
GLWin.panel = (wxPanel *)g_VideoInitialize.pWindowHandle;
|
||||||
|
GLWin.glCanvas = new wxGLCanvas(GLWin.panel, wxID_ANY, NULL,
|
||||||
GLWin.glCanvas = new wxGLCanvas(GLWin.panel, wxID_ANY, args,
|
wxPoint(0, 0), wxSize(_twidth, _theight));
|
||||||
wxPoint(0,0), size, wxSUNKEN_BORDER);
|
|
||||||
GLWin.glCtxt = new wxGLContext(GLWin.glCanvas);
|
GLWin.glCtxt = new wxGLContext(GLWin.glCanvas);
|
||||||
GLWin.glCanvas->Show(TRUE);
|
GLWin.glCanvas->Show(true);
|
||||||
|
|
||||||
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
|
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
// Create rendering window in Windows
|
// Create rendering window in Windows
|
||||||
@ -318,9 +310,17 @@ bool OpenGL_MakeCurrent()
|
|||||||
void OpenGL_Update()
|
void OpenGL_Update()
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
GLWin.glCanvas->GetSize((int *)&GLWin.width, (int *)&GLWin.height);
|
int width, height;
|
||||||
s_backbuffer_width = GLWin.width;
|
|
||||||
s_backbuffer_height = GLWin.height;
|
GLWin.panel->GetSize(&width, &height);
|
||||||
|
if (width == s_backbuffer_width && height == s_backbuffer_height)
|
||||||
|
return;
|
||||||
|
|
||||||
|
GLWin.glCanvas->SetSize(0, 0, width, height);
|
||||||
|
GLWin.glCtxt->SetCurrent(*GLWin.glCanvas);
|
||||||
|
s_backbuffer_width = width;
|
||||||
|
s_backbuffer_height = height;
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
RECT rcWindow;
|
RECT rcWindow;
|
||||||
if (!EmuWindow::GetParentWnd())
|
if (!EmuWindow::GetParentWnd())
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include <GL/wglew.h>
|
#include <GL/wglew.h>
|
||||||
|
|
||||||
#else // linux basic definitions
|
#else
|
||||||
|
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
@ -47,13 +47,13 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#endif // end USE_WX
|
#endif // end USE_WX
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#ifdef __APPLE__
|
||||||
#include <OpenGL/gl.h>
|
#include <OpenGL/gl.h>
|
||||||
#else
|
#else
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // linux basic definitions
|
#endif
|
||||||
|
|
||||||
#ifndef GL_DEPTH24_STENCIL8_EXT // allows FBOs to support stencils
|
#ifndef GL_DEPTH24_STENCIL8_EXT // allows FBOs to support stencils
|
||||||
#define GL_DEPTH_STENCIL_EXT 0x84F9
|
#define GL_DEPTH_STENCIL_EXT 0x84F9
|
||||||
@ -69,8 +69,8 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
wxGLCanvas *glCanvas;
|
wxGLCanvas *glCanvas;
|
||||||
wxPanel *panel;
|
|
||||||
wxGLContext *glCtxt;
|
wxGLContext *glCtxt;
|
||||||
|
wxPanel *panel;
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
int screen;
|
int screen;
|
||||||
Window win;
|
Window win;
|
||||||
@ -79,8 +79,8 @@ typedef struct {
|
|||||||
GLXContext ctx;
|
GLXContext ctx;
|
||||||
XSetWindowAttributes attr;
|
XSetWindowAttributes attr;
|
||||||
int x, y;
|
int x, y;
|
||||||
#endif
|
|
||||||
unsigned int width, height;
|
unsigned int width, height;
|
||||||
|
#endif
|
||||||
} GLWindow;
|
} GLWindow;
|
||||||
|
|
||||||
extern GLWindow GLWin;
|
extern GLWindow GLWin;
|
||||||
|
Reference in New Issue
Block a user