[wxmupen64plus] 08/71: Imported Upstream version 0.1+20110516

Sven Eckelmann ecsv-guest at moszumanska.debian.org
Thu Nov 26 06:23:27 UTC 2015


This is an automated email from the git hooks/post-receive script.

ecsv-guest pushed a commit to branch experimental
in repository wxmupen64plus.

commit 0b7dfd42955fcd9d8e4527514a6bdfd87943be06
Author: Sven Eckelmann <sven at narfation.org>
Date:   Mon May 16 19:20:33 2011 +0200

    Imported Upstream version 0.1+20110516
---
 gamespanel.cpp                 |  30 ++++++++--
 gamespanel.h                   |   1 +
 main.cpp                       |  25 ++++++---
 mupen64plusplus/MupenAPIpp.cpp |  14 ++---
 mupen64plusplus/MupenAPIpp.h   |   7 ++-
 wscript                        |   5 +-
 wxMupen64Plus.mk               |   8 +--
 wxvidext.cpp                   | 125 +++++++++++++++++++++++++++++++++++++----
 wxvidext.h                     |   2 +
 9 files changed, 177 insertions(+), 40 deletions(-)

diff --git a/gamespanel.cpp b/gamespanel.cpp
index 38c6a12..a52fb18 100644
--- a/gamespanel.cpp
+++ b/gamespanel.cpp
@@ -43,6 +43,7 @@
 #include <wx/statbmp.h>
 #include <wx/frame.h>
 #include <wx/glcanvas.h>
+#include <wx/display.h>
 
 #include <stdexcept>
 #include <map>
@@ -318,11 +319,11 @@ void GamesPanel::populateList()
 void GamesPanel::initGLCanvas()
 {
     Freeze();
-    m_item_list->Hide();
-    m_dir_picker->Hide();
     m_canvas = VidExt_InitGLCanvas(m_center_panel);
     if (m_canvas != NULL)
     {
+        m_item_list->Hide();
+        m_dir_picker->Hide();
         m_list_sizer->Add(m_canvas, 1, wxEXPAND | wxALL, 5);
         m_list_sizer->SetSizeHints(m_canvas);
         m_center_panel->Layout();
@@ -345,6 +346,7 @@ void GamesPanel::initGLCanvas()
 
 void GamesPanel::cleanGLCanvas()
 {
+    VidExt_AsyncCleanup();
     if (m_canvas)
     {
         Freeze();
@@ -442,6 +444,7 @@ void GamesPanel::onPlay(wxCommandEvent& evt)
             
             m_width_param = config[n]->getParamWithName("ScreenWidth");
             m_height_param = config[n]->getParamWithName("ScreenHeight");
+            m_fullscreen_param = config[n]->getParamWithName("Fullscreen");            
             break;
         }
     }
@@ -455,9 +458,26 @@ void GamesPanel::onPlay(wxCommandEvent& evt)
         m_previous_width = m_width_param->getIntValue();
         m_previous_height = m_height_param->getIntValue();
         
-        // maximize (but keep aspect ratio)
-        m_width_param->setIntValue(m_center_panel->GetSize().GetHeight()*1.33f);
-        m_height_param->setIntValue(m_center_panel->GetSize().GetHeight());
+        if (m_fullscreen_param->getBoolValue())
+        {
+            int displayID = wxDisplay::GetFromWindow( wxGetApp().GetTopWindow() );
+            if (displayID == wxNOT_FOUND)
+            {
+                wxMessageBox( _("An internal error occurred : can't determine on which display the frame is") );
+                return;
+            }
+            wxDisplay display(displayID);
+            
+            // maximize (but keep aspect ratio)
+            m_width_param->setIntValue(display.GetGeometry().GetHeight()*1.33f);
+            m_height_param->setIntValue(display.GetGeometry().GetHeight());
+        }
+        else
+        {
+            // maximize (but keep aspect ratio)
+            m_width_param->setIntValue(m_center_panel->GetSize().GetHeight()*1.33f);
+            m_height_param->setIntValue(m_center_panel->GetSize().GetHeight());
+        }
     }
     
     long item = m_item_list->GetNextItem(-1,
diff --git a/gamespanel.h b/gamespanel.h
index c26fb67..87da941 100644
--- a/gamespanel.h
+++ b/gamespanel.h
@@ -51,6 +51,7 @@ class GamesPanel : public wxPanel, public IConfigurationPanel, public IEmuStateL
     int m_previous_width, m_previous_height;
     ConfigParam* m_width_param;
     ConfigParam* m_height_param;
+    ConfigParam* m_fullscreen_param;
     
     /** Callback to sort the list */
     static int wxCALLBACK wxListCompareFunction(long item1, long item2, wxIntPtr sortData);
diff --git a/main.cpp b/main.cpp
index 917c6c1..4409182 100644
--- a/main.cpp
+++ b/main.cpp
@@ -28,6 +28,7 @@
 #include <wx/filedlg.h> 
 #include <wx/html/htmlwin.h>
 #include <wx/progdlg.h>
+#include <wx/artprov.h>
 
 #include "mupen64plusplus/MupenAPI.h"
 #include "mupen64plusplus/MupenAPIpp.h"
@@ -43,6 +44,11 @@
 #include <algorithm>
 #include "sdlhelper.h"
 
+#ifdef __WXGTK__
+#include <Xlib.h>
+//int XInitThreads();
+#endif
+
 const bool g_Verbose = false;
 
 const char* DEFAULT_VIDEO_PLUGIN = "mupen64plus-video-rice";
@@ -93,6 +99,10 @@ int main(int argc, char** argv)
 {
     wxDISABLE_DEBUG_SUPPORT();
     
+#ifdef __WXGTK__
+    XInitThreads();
+#endif
+
     MupenFrontendApp* app = new MupenFrontendApp(); 
     wxApp::SetInstance(app);
     return wxEntry(argc, argv);
@@ -182,6 +192,7 @@ bool MupenFrontendApp::OnInit()
     } // end while
     
     m_frame = new wxFrame(NULL, -1, "Mupen64Plus", wxDefaultPosition, wxSize(1024, 640));
+    SetTopWindow(m_frame);
     
     wxInitAllImageHandlers();
     if (not makeToolbar(plugins, 0)) return false;
@@ -676,13 +687,13 @@ bool MupenFrontendApp::makeToolbar(int plugins, int selectedSection)
     m_frame->SetIcon( icon_mupen );
 #endif
 
-    assert(icon_mupen.IsOk());    
-    assert(icon_input.IsOk());
-    assert(icon_cpu.IsOk());
-    assert(icon_audio.IsOk());
-    assert(icon_plugins.IsOk());
-    assert(icon_video.IsOk());
-    assert(icon_other.IsOk());
+    if (not icon_mupen.IsOk()) icon_mupen = wxArtProvider::GetIcon(wxART_ERROR, wxART_OTHER, wxSize(32,32));
+    if (not icon_input.IsOk()) icon_input = wxArtProvider::GetBitmap(wxART_ERROR, wxART_OTHER, wxSize(32,32));
+    if (not icon_cpu.IsOk()) icon_cpu = wxArtProvider::GetBitmap(wxART_ERROR, wxART_OTHER, wxSize(32,32));
+    if (not icon_audio.IsOk()) icon_audio = wxArtProvider::GetBitmap(wxART_ERROR, wxART_OTHER, wxSize(32,32));
+    if (not icon_plugins.IsOk()) icon_plugins = wxArtProvider::GetBitmap(wxART_ERROR, wxART_OTHER, wxSize(32,32));
+    if (not icon_video.IsOk()) icon_video = wxArtProvider::GetBitmap(wxART_ERROR, wxART_OTHER, wxSize(32,32));
+    if (not icon_other.IsOk()) icon_other = wxArtProvider::GetBitmap(wxART_ERROR, wxART_OTHER, wxSize(32,32));
     wxToolBarToolBase* t = m_toolbar->AddRadioTool(wxID_ANY, _("Games"), icon_mupen, icon_mupen);
     
     m_toolbar_items.push_back(GraphicalSection::createGamesSection(t));
diff --git a/mupen64plusplus/MupenAPIpp.cpp b/mupen64plusplus/MupenAPIpp.cpp
index d9b4656..b2fe902 100644
--- a/mupen64plusplus/MupenAPIpp.cpp
+++ b/mupen64plusplus/MupenAPIpp.cpp
@@ -288,13 +288,13 @@ void Mupen64PlusPlus::loadRom(wxString filename, bool attachPlugins, wxProgressD
     const int rom_size = thefile.Length() + 1024*2 /* in case the OS reports the size inaccurately */;
     char* rom_buf = new char[rom_size];
     wxMemoryOutputStream memoryImage(rom_buf, rom_size);
-//#ifdef __WXMSW__
+
+    int total = 0;
+
     {
         const int BUFFER_SIZE = 1024*20;
         char buffer[BUFFER_SIZE];
         size_t size;
-        
-        int total = 0;
         int t = 0;
         
         //printf("Will read ROM\n");
@@ -302,7 +302,6 @@ void Mupen64PlusPlus::loadRom(wxString filename, bool attachPlugins, wxProgressD
         {
             size = input.Read(buffer, BUFFER_SIZE).LastRead();
             
-            
             total += size;
             t++;
             if (t > 100)
@@ -325,16 +324,11 @@ void Mupen64PlusPlus::loadRom(wxString filename, bool attachPlugins, wxProgressD
         }
         while (size > 0 and not input.Eof() and input.IsOk() and input.CanRead());
     }
-//#else
-//    input.Read(memoryImage);
-//#endif
-    
-//    if (dialog != NULL) dialog->Update(50);
     
     wxStreamBuffer* buffer = memoryImage.GetOutputStreamBuffer();
     
     m_curr_rom_size = buffer->GetBufferSize();
-    m64p_error result = ::openRom(buffer->GetBufferSize(), buffer->GetBufferStart());
+    m64p_error result = ::openRom(total, buffer->GetBufferStart());
     
     delete[] rom_buf;
     
diff --git a/mupen64plusplus/MupenAPIpp.h b/mupen64plusplus/MupenAPIpp.h
index 66f6a95..70f7b05 100644
--- a/mupen64plusplus/MupenAPIpp.h
+++ b/mupen64plusplus/MupenAPIpp.h
@@ -436,8 +436,13 @@ public:
      * @return same as Mupen64PlusPlus::loadPlugins
      */
     int reloadPlugins();
-    
+
+    // TODO: make it configurable whether to use video extension
+#ifdef __WXGTK__
+    bool useVideoExtension() { return false; }
+#else
     bool useVideoExtension() { return true; }
+#endif
 };
 
 #endif
diff --git a/wscript b/wscript
index 40d8e9d..3f56a79 100644
--- a/wscript
+++ b/wscript
@@ -144,8 +144,11 @@ def build(bld):
         
     else:
         # For other unices
+        build_flags += ['-I/usr/include/X11']
         osal_src += ['mupen64plusplus/osal_dynamiclib_unix.c', 'mupen64plusplus/osal_files_unix.c']
-        link_flags += ['-lGL', '-ldl']
+        link_flags += ['-lGL', '-ldl', '-lX11']
+        
+        link_flags += ['-ldl']
         
         # install target
         data_dir = bld.path.find_dir('data')
diff --git a/wxMupen64Plus.mk b/wxMupen64Plus.mk
index b4690a7..6287621 100644
--- a/wxMupen64Plus.mk
+++ b/wxMupen64Plus.mk
@@ -13,7 +13,7 @@ CurrentFileName        :=
 CurrentFilePath        :=
 CurrentFileFullPath    :=
 User                   :=mmg
-Date                   :=04/30/11
+Date                   :=05/09/11
 CodeLitePath           :="/Users/mmg/Library/Application Support/codelite"
 LinkerName             :=g++
 ArchiveTool            :=ar rcus
@@ -37,9 +37,9 @@ ArchiveOutputSwitch    :=
 PreprocessOnlySwitch   :=-E 
 ObjectsFileList        :="/Users/mmg/Workspace_CL/wxMupen64Plus/wxMupen64Plus.txt"
 MakeDirCommand         :=mkdir -p
-CmpOptions             :=-Wall -g $(shell /usr/local/bin/wx-config-2.9 --cxxflags --unicode=yes --debug=yes core,base,gl) -arch i386 $(shell /usr/local/bin/sdl-config --cflags) -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk $(Preprocessors)
-C_CmpOptions           :=-Wall -g $(shell /usr/local/bin/wx-config-2.9 --cxxflags --unicode=yes --debug=yes core,base,gl) -arch i386 $(shell /usr/local/bin/sdl-config --cflags) -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk $(Preprocessors)
-LinkOptions            :=  -mwindows $(shell /usr/local/bin/wx-config-2.9 --debug=yes --unicode=yes --libs core,base,gl,html) -arch i386 $(shell /usr/local/bin/sdl-config --libs) -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk
+CmpOptions             :=-Wall -g $(shell /usr/local/bin/wx-config-2.9 --cxxflags --unicode=yes --debug=yes) -arch i386 $(shell /usr/local/bin/sdl-config --cflags) -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk $(Preprocessors)
+C_CmpOptions           :=-Wall -g $(shell /usr/local/bin/wx-config-2.9 --cxxflags --unicode=yes --debug=yes) -arch i386 $(shell /usr/local/bin/sdl-config --cflags) -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk $(Preprocessors)
+LinkOptions            :=  -mwindows $(shell /usr/local/bin/wx-config-2.9 --debug=yes --libs --unicode=yes) -arch i386 $(shell /usr/local/bin/sdl-config --libs) -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk
 IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch)/Developer/hg/mupen64plus/mupen64plus-core/src/api $(IncludeSwitch)/Developer/hg/mupen64plus/mupen64plus-core/src 
 RcIncludePath          :=
 Libs                   :=
diff --git a/wxvidext.cpp b/wxvidext.cpp
index 0100e76..9ad4a46 100644
--- a/wxvidext.cpp
+++ b/wxvidext.cpp
@@ -264,8 +264,15 @@ int BasicGLPane::getHeight()
     return GetSize().y;
 }
 
-//wxFrame* frame = NULL;
 BasicGLPane* glPane = NULL;
+
+wxDialog* fullscreen_frame = NULL;
+
+#ifdef __WXMAC__
+// work around wx bug
+wxFrame* fullscreen_helper_frame = NULL;
+#endif
+
 bool fullscreen = false;
 
 bool doublebuffer = true;
@@ -286,6 +293,7 @@ m64p_error VidExt_Init()
 m64p_error VidExt_Quit()
 {
     printf(">>>>>>>>>>>> WX: VidExt_Quit\n");
+    
     wxCommandEvent evt(wxMUPEN_CLEAN_GL_CANVAS, -1);
     wxGetApp().AddPendingEvent(evt);
     /*
@@ -301,6 +309,24 @@ m64p_error VidExt_Quit()
     return M64ERR_SUCCESS;
 }
 
+void VidExt_AsyncCleanup()
+{
+    if (fullscreen_frame != NULL)
+    {
+#ifdef __WXMAC__
+        fullscreen_helper_frame->ShowFullScreen(false);
+        fullscreen_helper_frame->Destroy();
+        fullscreen_helper_frame = NULL;
+#endif
+
+#ifndef __WXMAC__
+        fullscreen_frame->ShowFullScreen(false);
+#endif
+        fullscreen_frame->Destroy();
+        fullscreen_frame = NULL;
+    }
+}
+
 m64p_error VidExt_ListFullscreenModes(m64p_2d_size *SizeArray, int *NumSizes)
 {
     printf(">>>>>>>>>>>> WX: VidExt_ListFullscreenModes\n");
@@ -410,12 +436,17 @@ wxGLCanvas* VidExt_InitGLCanvas(wxWindow* parent)
         WX_GL_SAMPLE_BUFFERS,  // 1 for multisampling support (antialiasing)
         WX_GL_SAMPLES          // 4 for 2x2 antialising supersampling on most graphics cards
         */
-    
-        // TODO: make more parameters configurable?
+   
+#ifdef __WXGTK__
+    // Mr Linux is more picky (at least for me, I guess YMMV)
+    int args[] = {WX_GL_RGBA,  WX_GL_DOUBLEBUFFER, 0};
+#else
+    // TODO: make more parameters configurable?
     int args[] = {WX_GL_RGBA, WX_GL_BUFFER_SIZE, buffersize, WX_GL_DOUBLEBUFFER,
                   WX_GL_DEPTH_SIZE, depthsize, /*WX_GL_MIN_RED, redsize,
                   WX_GL_MIN_GREEN, greensize,  WX_GL_MIN_BLUE, bluesize,*/ 0};
-    
+#endif
+
     if (not wxGLCanvas::IsDisplaySupported(args))
     {
         wxMessageBox( _("Sorry, your system does not support the selected video configuration") );
@@ -425,12 +456,22 @@ wxGLCanvas* VidExt_InitGLCanvas(wxWindow* parent)
     
     if (fullscreen)
     {
-        wxFrame* frame = new wxFrame(NULL, wxID_ANY, "Mupen64Plus", wxDefaultPosition, wxDefaultSize,
-                                     wxSYSTEM_MENU | wxFRAME_FLOAT_ON_PARENT | wxFRAME_TOOL_WINDOW);
-        glPane = new BasicGLPane(frame, args);
-        frame->Maximize();
-        //frame->ShowFullScreen(true, wxFULLSCREEN_NOMENUBAR);
-        frame->Show();
+#ifdef __WXMAC__
+        fullscreen_helper_frame = new wxFrame(NULL, wxID_ANY, "Mupen64Plus");
+        fullscreen_helper_frame->ShowFullScreen(true, wxFULLSCREEN_NOMENUBAR);
+#endif
+        
+        fullscreen_frame = new wxDialog(NULL, wxID_ANY, "Mupen64Plus", wxDefaultPosition, wxDefaultSize,
+                                        wxSTAY_ON_TOP);//wxSYSTEM_MENU | wxFRAME_FLOAT_ON_PARENT | wxFRAME_TOOL_WINDOW);
+        glPane = new BasicGLPane(fullscreen_frame, args);
+        
+#ifdef __WXMAC__
+        fullscreen_frame->Maximize();
+        fullscreen_frame->Show();
+#else
+        fullscreen_frame->ShowFullScreen(true, wxFULLSCREEN_NOMENUBAR);
+#endif
+        glPane->SetFocus();
         return NULL;
     }
     else
@@ -581,8 +622,68 @@ void* VidExt_GL_GetProcAddress(const char* Proc)
 	out = (void*)glXGetProcAddress((const GLubyte*)Proc);
 #else
 
-    // FIXME: silly way to fix VidExt_GL_GetProcAddress
-    if (strcmp(Proc, "glActiveTexture") == 0)
+    // FIXME: silly way to fix VidExt_GL_GetProcAddress on OSX
+    if (strcmp(Proc, "glClientActiveTextureARB") == 0)
+    {
+        out = (void*)&glClientActiveTextureARB;
+    }
+    else if (strcmp(Proc, "glCombinerParameterfvNV") == 0)
+    {
+        out = (void*)&glCombinerParameterfvNV;
+    }
+    else if (strcmp(Proc, "glFinalCombinerInputNV") == 0)
+    {
+        out = (void*)&glFinalCombinerInputNV;
+    }
+    else if (strcmp(Proc, "glCombinerOutputNV") == 0)
+    {
+        out = (void*)&glCombinerOutputNV;
+    }
+    else if (strcmp(Proc, "glCombinerInputNV") == 0)
+    {
+        out = (void*)&glCombinerInputNV;
+    }
+    else if (strcmp(Proc, "glCombinerParameteriNV") == 0)
+    {
+        out = (void*)&glCombinerParameteriNV;
+    }
+    else if (strcmp(Proc, "glActiveTextureARB") == 0)
+    {
+        out = (void*)&glActiveTextureARB;
+    }
+    else if (strcmp(Proc, "glMultiTexCoord2f") == 0)
+    {
+        out = (void*)&glMultiTexCoord2f;
+    }
+    else if (strcmp(Proc, "glMultiTexCoord2fv") == 0)
+    {
+        out = (void*)&glMultiTexCoord2fv;
+    }
+    else if (strcmp(Proc, "glDeleteProgramsARB") == 0)
+    {
+        out = (void*)&glDeleteProgramsARB;
+    }  
+    else if (strcmp(Proc, "glProgramStringARB") == 0)
+    {
+        out = (void*)&glProgramStringARB;
+    }    
+    else if (strcmp(Proc, "glBindProgramARB") == 0)
+    {
+        out = (void*)&glBindProgramARB;
+    }
+    else if (strcmp(Proc, "glGenProgramsARB") == 0)
+    {
+        out = (void*)&glGenProgramsARB;
+    }
+    else if (strcmp(Proc, "glProgramEnvParameter4fvARB") == 0)
+    {
+        out = (void*)&glProgramEnvParameter4fvARB;
+    }
+    else if (strcmp(Proc, "glFogCoordPointerEXT") == 0)
+    {
+        out = (void*)&glFogCoordPointerEXT;
+    }
+    else if (strcmp(Proc, "glActiveTexture") == 0)
     {
         out = (void*)&glActiveTexture;
     }
diff --git a/wxvidext.h b/wxvidext.h
index 33e663f..3e378bd 100644
--- a/wxvidext.h
+++ b/wxvidext.h
@@ -39,6 +39,8 @@ m64p_error VidExt_GL_SwapBuffers(void);
 m64p_error installWxVideoExtension();
 
 wxGLCanvas* VidExt_InitGLCanvas(wxWindow* parent);
+
 void VidExt_InitedGLCanvas();
+void VidExt_AsyncCleanup();
 
 #endif // VIDEO_EXTENSION_H

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/wxmupen64plus.git



More information about the Pkg-games-commits mailing list