diff --git a/desmume/src/frontend/posix/configure.ac b/desmume/src/frontend/posix/configure.ac
index 15a5c1b70..e300e31b1 100644
--- a/desmume/src/frontend/posix/configure.ac
+++ b/desmume/src/frontend/posix/configure.ac
@@ -75,7 +75,7 @@ AM_CONDITIONAL([HAVE_GL], [test "${have_gl_h}" = "yes"])
dnl - if --enable-osmesa is used, check for it
AC_ARG_ENABLE([osmesa],
- [AC_HELP_STRING([--enable-osmesa], [use off-screen mesa])],
+ [AC_HELP_STRING([--enable-osmesa], [use off-screen mesa, overrides GLX])],
[osmesa=$enableval],
[osmesa=no])
diff --git a/desmume/src/frontend/posix/gtk/glx_3Demu.cpp b/desmume/src/frontend/posix/gtk/glx_3Demu.cpp
index e4bee8e77..98618b422 100644
--- a/desmume/src/frontend/posix/gtk/glx_3Demu.cpp
+++ b/desmume/src/frontend/posix/gtk/glx_3Demu.cpp
@@ -1,22 +1,20 @@
-/*
- Copyright (C) 2013 The Lemon Man
-
- This file is part of DeSmuME
-
- DeSmuME is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- DeSmuME is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with DeSmuME; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
+/*
+ Copyright (C) 2013 The Lemon Man
+ Copyright (C) 2013-2017 DeSmuME team
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with the this software. If not, see .
+ */
#ifdef HAVE_GL_GLX
#include
@@ -24,9 +22,11 @@
#include
#include "../OGLRender.h"
+#include "glx_3Demu.h"
+
static bool glx_beginOpenGL(void) { return 1; }
static void glx_endOpenGL(void) { }
-static bool glx_init(void) { return true; }
+static bool glx_init(void) { return is_glx_initialized(); }
static int xerror_handler(Display *dpy, XErrorEvent *ev) { return 0; }
static GLXContext ctx = NULL;
@@ -34,7 +34,7 @@ static GLXPbuffer pbuf;
typedef GLXContext (*wtf)(Display*, GLXFBConfig, GLXContext, Bool, const int*);
-int deinit_glx_3Demu(void)
+bool deinit_glx_3Demu(void)
{
Display *dpy = glXGetCurrentDisplay();
@@ -53,7 +53,7 @@ int deinit_glx_3Demu(void)
return false;
}
-int init_glx_3Demu(void)
+bool init_glx_3Demu(void)
{
Display *dpy = XOpenDisplay(NULL);
XVisualInfo *vis;
@@ -159,7 +159,7 @@ int init_glx_3Demu(void)
bool is_glx_initialized(void)
{
- return ctx != NULL;
+ return (ctx != NULL);
}
#endif // HAVE_GLX
diff --git a/desmume/src/frontend/posix/gtk/glx_3Demu.h b/desmume/src/frontend/posix/gtk/glx_3Demu.h
index b21b9376c..c35dbc0dc 100644
--- a/desmume/src/frontend/posix/gtk/glx_3Demu.h
+++ b/desmume/src/frontend/posix/gtk/glx_3Demu.h
@@ -1,25 +1,27 @@
-/*
- Copyright (C) 2013 The Lemon Man
+/*
+ Copyright (C) 2013 The Lemon Man
+ Copyright (C) 2013-2017 DeSmuME team
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with the this software. If not, see .
+ */
- This file is part of DeSmuME
+#ifndef GLX_3DEMU_H
+#define GLX_3DEMU_H
- DeSmuME is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- DeSmuME is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with DeSmuME; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#ifdef HAVE_GL_GLX
-int init_glx_3Demu(void);
-int deinit_glx_3Demu(void);
+bool init_glx_3Demu(void);
+bool deinit_glx_3Demu(void);
bool is_glx_initialized(void);
-#endif
+
+#endif // GLX_3DEMU_H
+
diff --git a/desmume/src/frontend/posix/gtk/main.cpp b/desmume/src/frontend/posix/gtk/main.cpp
index e8157dc48..b3b004b13 100644
--- a/desmume/src/frontend/posix/gtk/main.cpp
+++ b/desmume/src/frontend/posix/gtk/main.cpp
@@ -1,22 +1,19 @@
-/* main.cpp - this file is part of DeSmuME
- *
- * Copyright (C) 2006-2016 DeSmuME Team
- * Copyright (C) 2007 Pascal Giard (evilynux)
- *
- * This file is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This file is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ /*
+ Copyright (C) 2007 Pascal Giard (evilynux)
+ Copyright (C) 2006-2017 DeSmuME team
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with the this software. If not, see .
*/
#ifndef GTK_UI
@@ -65,17 +62,25 @@
#include "filter/videofilter.h"
#ifdef GDB_STUB
-#include "armcpu.h"
-#include "gdbstub.h"
+ #include "armcpu.h"
+ #include "gdbstub.h"
#endif
#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
-#include
-#include
-#include "OGLRender.h"
-#include "OGLRender_3_2.h"
-#include "osmesa_3Demu.h"
-#include "glx_3Demu.h"
+ #define HAVE_OPENGL
+#endif
+
+#ifdef HAVE_OPENGL
+ #include
+ #include
+ #include "OGLRender.h"
+ #include "OGLRender_3_2.h"
+#endif
+
+#if defined(HAVE_GL_GLX)
+ #include "glx_3Demu.h"
+#elif defined(HAVE_LIBOSMESA)
+ #include "osmesa_3Demu.h"
#endif
#include "config.h"
@@ -617,7 +622,7 @@ NULL
GPU3DInterface *core3DList[] = {
&gpu3DNull,
&gpu3DRasterize,
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
+#ifdef HAVE_OPENGL
&gpu3Dgl,
#endif
};
@@ -693,7 +698,7 @@ fill_configured_features( class configured_features *config,
{ "3d-render", 0, 0, G_OPTION_ARG_INT, &config->engine_3d, "Select 3D rendering engine. Available engines:\n"
"\t\t\t\t 0 = 3d disabled\n"
"\t\t\t\t 1 = internal rasterizer (default)\n"
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
+#ifdef HAVE_OPENGL
"\t\t\t\t 2 = opengl\n"
#endif
,"ENGINE"},
@@ -737,12 +742,12 @@ fill_configured_features( class configured_features *config,
// Check if the commandLine argument was actually passed
if (config->engine_3d != -1) {
if (config->engine_3d != 0 && config->engine_3d != 1
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
+#ifdef HAVE_OPENGL
&& config->engine_3d != 2
#endif
) {
g_printerr("Currently available ENGINES: 0, 1"
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
+#ifdef HAVE_OPENGL
", 2"
#endif
"\n");
@@ -2185,8 +2190,8 @@ static void GraphicsSettingsDialog() {
coreCombo = gtk_combo_box_text_new();
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(coreCombo), 0, "Null");
- gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(coreCombo), 1, "Software Raserizer");
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
+ gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(coreCombo), 1, "SoftRasterizer");
+#ifdef HAVE_OPENGL
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(coreCombo), 2, "OpenGL");
#endif
gtk_combo_box_set_active(GTK_COMBO_BOX(coreCombo), cur3DCore);
@@ -2230,17 +2235,17 @@ static void GraphicsSettingsDialog() {
static_cast(GTK_EXPAND | GTK_FILL), 0, 0);
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
+#ifdef HAVE_OPENGL
// OpenGL Multisample
- wMultisample = gtk_check_button_new_with_label("Multisample (OpenGL)");
+ wMultisample = gtk_check_button_new_with_label("Multisample Antialiasing (OpenGL)");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wMultisample), CommonSettings.GFX3D_Renderer_Multisample);
gtk_table_attach(GTK_TABLE(wTable), wMultisample, 1, 2, 2, 3,
static_cast(GTK_EXPAND | GTK_FILL),
static_cast(GTK_EXPAND | GTK_FILL), 10, 0);
#endif
- // SoftwareRasterizer High Color Interpolation
- wHCInterpolate = gtk_check_button_new_with_label("High Resolution Color Interpolation (SoftwareRasterizer)");
+ // SoftRasterizer High Color Interpolation
+ wHCInterpolate = gtk_check_button_new_with_label("High Resolution Color Interpolation (SoftRasterizer)");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wHCInterpolate), CommonSettings.GFX3D_HighResolutionInterpolateColor);
gtk_table_attach(GTK_TABLE(wTable), wHCInterpolate, 1, 2, 3, 4,
static_cast(GTK_EXPAND | GTK_FILL),
@@ -2256,20 +2261,31 @@ static void GraphicsSettingsDialog() {
int sel3DCore = gtk_combo_box_get_active(GTK_COMBO_BOX(coreCombo));
// Change only if needed
- if (sel3DCore != cur3DCore) {
-#if defined(HAVE_LIBOSMESA)
- if (sel3DCore == 2 && !is_osmesa_initialized()) {
- init_osmesa_3Demu();
- }
+ if (sel3DCore != cur3DCore)
+ {
+ if (sel3DCore == 2)
+ {
+#if !defined(HAVE_OPENGL)
+ sel3DCore = RENDERID_SOFTRASTERIZER;
#elif defined(HAVE_GL_GLX)
- if (sel3DCore == 2 && !is_glx_initialized()) {
- init_glx_3Demu();
- }
+ if (!is_glx_initialized())
+ {
+ init_glx_3Demu();
+ }
+#elif defined(HAVE_LIBOSMESA)
+ if (!is_osmesa_initialized())
+ {
+ init_osmesa_3Demu();
+ }
#endif
+ }
- if (GPU->Change3DRendererByID(sel3DCore)) {
+ if (GPU->Change3DRendererByID(sel3DCore))
+ {
config.core3D = sel3DCore;
- } else {
+ }
+ else
+ {
GPU->Change3DRendererByID(RENDERID_SOFTRASTERIZER);
g_printerr("3D renderer initialization failed!\nFalling back to 3D core: %s\n", core3DList[RENDERID_SOFTRASTERIZER]->name);
config.core3D = RENDERID_SOFTRASTERIZER;
@@ -2292,7 +2308,7 @@ static void GraphicsSettingsDialog() {
CommonSettings.GFX3D_Renderer_TextureSmoothing = config.textureSmoothing = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wSmoothing));
CommonSettings.GFX3D_Renderer_TextureScalingFactor = config.textureUpscale = scale;
CommonSettings.GFX3D_HighResolutionInterpolateColor = config.highColorInterpolation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wHCInterpolate));
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
+#ifdef HAVE_OPENGL
CommonSettings.GFX3D_Renderer_Multisample = config.multisampling = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wMultisample));
#endif
}
@@ -3348,8 +3364,10 @@ common_gtk_main( class configured_features *my_config)
gtk_toggle_action_set_active((GtkToggleAction *)action, FALSE);
}
+#if defined(HAVE_OPENGL) && defined(OGLRENDER_3_2_H)
OGLLoadEntryPoints_3_2_Func = OGLLoadEntryPoints_3_2;
OGLCreateRenderer_3_2_Func = OGLCreateRenderer_3_2;
+#endif
//Set the 3D emulation to use
int core = my_config->engine_3d;
@@ -3362,23 +3380,29 @@ common_gtk_main( class configured_features *my_config)
// Check if it is valid
if (!(core >= 0 && core <= 2)) {
- // If it is invalid, reset it to softwareRasterizer
+ // If it is invalid, reset it to SoftRasterizer
core = 1;
}
//Set this too for clarity
my_config->engine_3d = core;
}
-#if defined(HAVE_LIBOSMESA) || defined(HAVE_GL_GLX)
- if(core == 2)
- {
-#if defined(HAVE_LIBOSMESA)
- core = init_osmesa_3Demu()
+
+ if (core == 2)
+ {
+#if !defined(HAVE_OPENGL)
+ core = RENDERID_SOFTRASTERIZER;
#elif defined(HAVE_GL_GLX)
- core = init_glx_3Demu()
-#endif
- ? 2 : RENDERID_NULL;
- }
+ if (!is_glx_initialized())
+ {
+ init_glx_3Demu();
+ }
+#elif defined(HAVE_LIBOSMESA)
+ if (!is_osmesa_initialized())
+ {
+ init_osmesa_3Demu();
+ }
#endif
+ }
if (!GPU->Change3DRendererByID(core)) {
GPU->Change3DRendererByID(RENDERID_SOFTRASTERIZER);
@@ -3443,10 +3467,10 @@ common_gtk_main( class configured_features *my_config)
desmume_free();
-#if defined(HAVE_LIBOSMESA)
- deinit_osmesa_3Demu();
-#elif defined(HAVE_GL_GLX)
- deinit_glx_3Demu();
+#if defined(HAVE_GL_GLX)
+ deinit_glx_3Demu();
+#elif defined(HAVE_LIBOSMESA)
+ deinit_osmesa_3Demu();
#endif
/* Unload joystick */
diff --git a/desmume/src/frontend/posix/gtk/osmesa_3Demu.cpp b/desmume/src/frontend/posix/gtk/osmesa_3Demu.cpp
index 51f28aa31..9366a20cc 100644
--- a/desmume/src/frontend/posix/gtk/osmesa_3Demu.cpp
+++ b/desmume/src/frontend/posix/gtk/osmesa_3Demu.cpp
@@ -1,60 +1,98 @@
-/*
- Copyright (C) 2009 Guillaume Duhamel
-
- This file is part of DeSmuME
-
- DeSmuME is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- DeSmuME is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with DeSmuME; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
+/*
+ Copyright (C) 2009 Guillaume Duhamel
+ Copyright (C) 2009-2017 DeSmuME team
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with the this software. If not, see .
+ */
#ifdef HAVE_LIBOSMESA
+
#include
#include
#include "../OGLRender.h"
+#include "../OGLRender_3_2.h"
+
#include "osmesa_3Demu.h"
+static void *buffer = NULL;
+static OSMesaContext ctx = NULL;
+
static bool osmesa_beginOpenGL(void) { return 1; }
static void osmesa_endOpenGL(void) { }
-static bool osmesa_init(void) { return true; }
-
-static void * buffer = NULL;
-static OSMesaContext ctx;
+static bool osmesa_init(void) { return is_osmesa_initialized(); }
void deinit_osmesa_3Demu (void)
{
free(buffer);
+ buffer = NULL;
+
OSMesaDestroyContext(ctx);
+ ctx = NULL;
}
-int init_osmesa_3Demu(void)
+bool init_osmesa_3Demu(void)
{
- if (!ctx)
- {
- printf("OSMesaCreateContext failed!\n");
- return false;
- }
+#if (((OSMESA_MAJOR_VERSION * 100) + OSMESA_MINOR_VERSION) >= 1102) && defined(OSMESA_CONTEXT_MAJOR_VERSION)
+ static const int attributes_3_2_core_profile[] = {
+ OSMESA_FORMAT, OSMESA_RGBA,
+ OSMESA_DEPTH_BITS, 24,
+ OSMESA_STENCIL_BITS, 8,
+ OSMESA_ACCUM_BITS, 0,
+ OSMESA_PROFILE, OSMESA_CORE_PROFILE,
+ OSMESA_CONTEXT_MAJOR_VERSION, 3,
+ OSMESA_CONTEXT_MINOR_VERSION, 2,
+ 0 };
+
+ ctx = OSMesaCreateContextAttribs(attributes_3_2_core_profile, NULL);
+ if (ctx == NULL)
+ {
+ printf("OSMesa: Could not create a 3.2 Core Profile context. Will attempt to create a 2.1 compatibility context...\n");
+
+ static const int attributes_2_1[] = {
+ OSMESA_FORMAT, OSMESA_RGBA,
+ OSMESA_DEPTH_BITS, 24,
+ OSMESA_STENCIL_BITS, 8,
+ OSMESA_ACCUM_BITS, 0,
+ OSMESA_PROFILE, OSMESA_COMPAT_PROFILE,
+ OSMESA_CONTEXT_MAJOR_VERSION, 2,
+ OSMESA_CONTEXT_MINOR_VERSION, 1,
+ 0 };
+
+ ctx = OSMesaCreateContextAttribs(attributes_2_1, NULL);
+ }
+#endif
- buffer = malloc(256 * 192 * 4);
+ if (ctx == NULL)
+ {
+ ctx = OSMesaCreateContextExt(OSMESA_RGBA, 24, 8, 0, NULL);
+ if (ctx == NULL)
+ {
+ printf("OSMesa: OSMesaCreateContextExt() failed!\n");
+ return false;
+ }
+ }
+
+ buffer = malloc(GPU_FRAMEBUFFER_NATIVE_WIDTH * GPU_FRAMEBUFFER_NATIVE_HEIGHT * sizeof(uint32_t));
if (!buffer)
{
- printf("Could not allocate enough memory!\n");
+ printf("OSMesa: Could not allocate enough memory for the context!\n");
return false;
}
- if (!OSMesaMakeCurrent(ctx, buffer, GL_UNSIGNED_BYTE, 256, 192))
+ if (!OSMesaMakeCurrent(ctx, buffer, GL_UNSIGNED_BYTE, GPU_FRAMEBUFFER_NATIVE_WIDTH, GPU_FRAMEBUFFER_NATIVE_HEIGHT))
{
- printf("OSMesaMakeCurrent failed!\n");
+ printf("OSMesa: OSMesaMakeCurrent() failed!\n");
free(buffer);
return false;
}
@@ -68,6 +106,7 @@ int init_osmesa_3Demu(void)
bool is_osmesa_initialized(void)
{
- return ctx != NULL;
+ return (ctx != NULL);
}
+
#endif
diff --git a/desmume/src/frontend/posix/gtk/osmesa_3Demu.h b/desmume/src/frontend/posix/gtk/osmesa_3Demu.h
index 0b3d97c47..af6a9f4db 100644
--- a/desmume/src/frontend/posix/gtk/osmesa_3Demu.h
+++ b/desmume/src/frontend/posix/gtk/osmesa_3Demu.h
@@ -1,25 +1,27 @@
-/*
- Copyright (C) 2009 Guillaume Duhamel
+/*
+ Copyright (C) 2009 Guillaume Duhamel
+ Copyright (C) 2009-2017 DeSmuME team
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with the this software. If not, see .
+ */
- This file is part of DeSmuME
+#ifndef OSMESA_3DEMU_H
+#define OSMESA_3DEMU_H
- DeSmuME is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- DeSmuME is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with DeSmuME; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#ifdef HAVE_LIBOSMESA
-int init_osmesa_3Demu(void);
+bool init_osmesa_3Demu(void);
void deinit_osmesa_3Demu(void);
bool is_osmesa_initialized(void);
-#endif
+
+#endif // OSMESA_3DEMU_H
+