diff --git a/src/wx/CMakeLists.txt b/src/wx/CMakeLists.txt
index 7e20c088..fefca080 100644
--- a/src/wx/CMakeLists.txt
+++ b/src/wx/CMakeLists.txt
@@ -89,6 +89,11 @@ if(NOT WIN32 AND NOT APPLE)
endif()
endif()
+# Win32 definitions common to all toolchains.
+if (WIN32)
+ add_definitions(-D_UNICODE -DUNICODE -DwxUSE_GUI=1 -D__WXMSW__ -DWINVER=0x0A00 -DNTDDI_VERSION=0x0A000007)
+endif()
+
# on VS with vcpkg we can't use FindwxWidgets, we have to set everything up
# manually because the package is broken
if(WIN32 AND CMAKE_TOOLCHAIN_FILE MATCHES vcpkg AND (X86_32 OR X86_64))
@@ -120,8 +125,6 @@ if(WIN32 AND CMAKE_TOOLCHAIN_FILE MATCHES vcpkg AND (X86_32 OR X86_64))
add_definitions(-DWXUSINGDLL)
endif()
- add_definitions(-D_UNICODE -DUNICODE -DwxUSE_GUI=1 -D__WXMSW__ -DwxUSE_RC_MANIFEST -DwxUSE_DPI_AWARE_MANIFEST=2)
-
set(common_prefix ${_VCPKG_INSTALLED_DIR}/${WINARCH}-windows${arch_suffix})
set(dbg_prefix ${_VCPKG_INSTALLED_DIR}/${WINARCH}-windows${arch_suffix}/debug)
set(installed_prefix ${_VCPKG_INSTALLED_DIR}/${WINARCH}-windows${arch_suffix}/${path_prefix})
@@ -755,9 +758,17 @@ set(
set(ALL_SRC_WX ${SRC_WX})
list(APPEND ALL_SRC_WX ${CMAKE_CURRENT_SOURCE_DIR}/macsupport.mm)
+list(APPEND ALL_SRC_WX ${CMAKE_CURRENT_SOURCE_DIR}/widgets/dpi-support-mac.mm)
+list(APPEND ALL_SRC_WX ${CMAKE_CURRENT_SOURCE_DIR}/widgets/dpi-support-win.cpp)
+list(APPEND ALL_SRC_WX ${CMAKE_CURRENT_SOURCE_DIR}/widgets/dpi-support.cpp)
if(APPLE)
- list(APPEND SRC_WX ${CMAKE_CURRENT_SOURCE_DIR}/macsupport.mm)
+ list(APPEND SRC_WX macsupport.mm)
+ list(APPEND SRC_WX widgets/dpi-support-mac.mm)
+elseif(WIN32)
+ list(APPEND SRC_WX widgets/dpi-support-win.cpp)
+else()
+ list(APPEND SRC_WX widgets/dpi-support.cpp)
endif()
set(
@@ -776,6 +787,7 @@ set(
wayland.h
wxutil.h
config/user-input.h
+ widgets/dpi-support.h
widgets/wx/gamecontrol.h
widgets/wx/keyedit.h
widgets/wx/joyedit.h
@@ -976,18 +988,23 @@ if(NOT TRANSLATIONS_ONLY)
endif()
endif()
+ if(WIN32)
+ # This is necessary for DPI support and is not included by default in
+ # the msys2 build.
+ target_link_libraries(visualboyadvance-m shcore)
+
+ if(MSVC)
+ # the debug lib libcmtd is linked in debug mode, so don't link the normal version
+ set_target_properties(visualboyadvance-m PROPERTIES LINK_FLAGS_DEBUG "/nodefaultlib:libcmt")
+
+ # Disable the auto-generated manifest from CMake.
+ target_link_options(visualboyadvance-m PRIVATE "/MANIFEST:NO")
+ endif()
+ endif()
+
# link libgcc/libstdc++ statically on mingw
# and adjust link command when making a static binary
if(CMAKE_COMPILER_IS_GNUCXX)
- if(WIN32)
- # Build a console app in debug mode on Windows
- if(CMAKE_BUILD_TYPE MATCHES "^(Debug|RelWithDebInfo)$")
- set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -Wl,--subsystem,console")
- else()
- set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -Wl,--subsystem,windows")
- endif()
- endif()
-
if(VBAM_STATIC)
# some dists don't have a static libpthread
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread ")
@@ -1006,20 +1023,8 @@ if(NOT TRANSLATIONS_ONLY)
)
endif()
endif()
- elseif(MSVC)
- # the debug lib libcmtd is linked in debug mode, so don't link the normal version
- set_target_properties(visualboyadvance-m PROPERTIES LINK_FLAGS_DEBUG "/nodefaultlib:libcmt /subsystem:console")
-
- # Disable the auto-generated manifest from CMake.
- target_link_options(visualboyadvance-m PRIVATE "/MANIFEST:NO")
endif()
- # Make the app a console app in debug mode to get log messages.
- if(WIN32 AND CMAKE_BUILD_TYPE STREQUAL Debug)
- target_compile_definitions(visualboyadvance-m PRIVATE -DWIN32_CONSOLE_APP)
- endif()
-
-
if(NOT WIN32 AND NOT APPLE)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/visualboyadvance-m.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/visualboyadvance-m.appdata.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/share/appdata)
diff --git a/src/wx/macsupport.mm b/src/wx/macsupport.mm
index c47590b7..ea285614 100644
--- a/src/wx/macsupport.mm
+++ b/src/wx/macsupport.mm
@@ -7,41 +7,6 @@
#include "wxvbam.h"
#include "drawing.h"
-double HiDPIAware::HiDPIScaleFactor()
-{
- if (hidpi_scale_factor == 0) {
- NSWindow* window = [(NSView*)GetWindow()->GetHandle() window];
-
- if ([window respondsToSelector:@selector(backingScaleFactor)]) {
- hidpi_scale_factor = [window backingScaleFactor];
- }
- else {
- hidpi_scale_factor = 1.0;
- }
- }
-
- return hidpi_scale_factor;
-}
-
-void HiDPIAware::RequestHighResolutionOpenGLSurface()
-{
- NSView* view = (NSView*)(GetWindow()->GetHandle());
-
- if ([view respondsToSelector:@selector(setWantsBestResolutionOpenGLSurface:)]) {
- [view setWantsBestResolutionOpenGLSurface:YES];
- }
-}
-
-void HiDPIAware::GetRealPixelClientSize(int* x, int* y)
-{
- NSView* view = (NSView*)(GetWindow()->GetHandle());
-
- NSSize backing_size = [view convertSizeToBacking:view.bounds.size];
-
- *x = backing_size.width;
- *y = backing_size.height;
-}
-
Quartz2DDrawingPanel::Quartz2DDrawingPanel(wxWindow* parent, int _width, int _height)
: BasicDrawingPanel(parent, _width, _height)
{
diff --git a/src/wx/panel.cpp b/src/wx/panel.cpp
index a1ba0afa..5c45bb30 100644
--- a/src/wx/panel.cpp
+++ b/src/wx/panel.cpp
@@ -54,6 +54,7 @@ GameArea::GameArea()
, basic_width(GBAWidth)
, basic_height(GBAHeight)
, fullscreen(false)
+ , dpi_scale_factor_(widgets::DPIScaleFactorForWindow(this))
, paused(false)
, pointer_blanked(false)
, mouse_active_time(0)
@@ -745,12 +746,11 @@ void GameArea::DelBorder()
void GameArea::AdjustMinSize()
{
wxWindow* frame = wxGetApp().frame;
- double hidpi_scale_factor = HiDPIScaleFactor();
// note: could safely set min size to 1x or less regardless of video_scale
// but setting it to scaled size makes resizing to default easier
- wxSize sz((std::ceil(basic_width * gopts.video_scale) / hidpi_scale_factor),
- (std::ceil(basic_height * gopts.video_scale) / hidpi_scale_factor));
+ wxSize sz((std::ceil(basic_width * gopts.video_scale) * dpi_scale_factor_),
+ (std::ceil(basic_height * gopts.video_scale) * dpi_scale_factor_));
SetMinSize(sz);
#if wxCHECK_VERSION(2, 8, 8)
sz = frame->ClientToWindowSize(sz);
@@ -763,10 +763,9 @@ void GameArea::AdjustMinSize()
void GameArea::LowerMinSize()
{
wxWindow* frame = wxGetApp().frame;
- double hidpi_scale_factor = HiDPIScaleFactor();
- wxSize sz(std::ceil(basic_width / hidpi_scale_factor),
- std::ceil(basic_height / hidpi_scale_factor));
+ wxSize sz(std::ceil(basic_width * dpi_scale_factor_),
+ std::ceil(basic_height * dpi_scale_factor_));
SetMinSize(sz);
// do not take decorations into account
@@ -780,9 +779,8 @@ void GameArea::AdjustSize(bool force)
if (fullscreen)
return;
- double hidpi_scale_factor = HiDPIScaleFactor();
- const wxSize newsz((std::ceil(basic_width * gopts.video_scale) / hidpi_scale_factor),
- (std::ceil(basic_height * gopts.video_scale) / hidpi_scale_factor));
+ const wxSize newsz((std::ceil(basic_width * gopts.video_scale) * dpi_scale_factor_),
+ (std::ceil(basic_height * gopts.video_scale) * dpi_scale_factor_));
if (!force) {
wxSize sz = GetClientSize();
@@ -961,6 +959,16 @@ void GameArea::OnKillFocus(wxFocusEvent& ev)
ev.Skip();
}
+#if WX_HAS_NATIVE_HI_DPI_SUPPORT
+void GameArea::OnDpiChanged(wxDPIChangedEvent&) {
+ if (dpi_scale_factor_ == GetDPIScaleFactor()) {
+ return;
+ }
+ dpi_scale_factor_ = GetDPIScaleFactor();
+ AdjustSize(true);
+}
+#endif // WX_HAS_NATIVE_HI_DPI_SUPPORT
+
void GameArea::Pause()
{
if (paused)
@@ -1332,6 +1340,9 @@ void GameArea::OnSDLJoy(wxJoyEvent& ev)
BEGIN_EVENT_TABLE(GameArea, wxPanel)
EVT_IDLE(GameArea::OnIdle)
EVT_SDLJOY(GameArea::OnSDLJoy)
+#if WX_HAS_NATIVE_HI_DPI_SUPPORT
+EVT_DPI_CHANGED(GameArea::OnDpiChanged)
+#endif // WX_HAS_NATIVE_HI_DPI_SUPPORT
// FIXME: wxGTK does not generate motion events in MainFrame (not sure
// what to do about it)
EVT_MOUSE_EVENTS(GameArea::MouseEvent)
@@ -2086,7 +2097,7 @@ GLDrawingPanel::GLDrawingPanel(wxWindow* parent, int _width, int _height)
, wxglc(parent, wxID_ANY, glopts, wxPoint(0, 0), parent->GetClientSize(),
wxFULL_REPAINT_ON_RESIZE | wxWANTS_CHARS)
{
- RequestHighResolutionOpenGLSurface();
+ widgets::RequestHighResolutionOpenGlSurfaceForWindow(this);
#ifndef wxGL_IMPLICIT_CONTEXT
ctx = new wxGLContext(this);
SetCurrent(*ctx);
@@ -2251,7 +2262,7 @@ void GLDrawingPanel::AdjustViewport()
#endif
int x, y;
- GetRealPixelClientSize(&x, &y);
+ widgets::GetRealPixelClientSize(this, &x, &y);
glViewport(0, 0, x, y);
#ifdef DEBUG
@@ -2514,24 +2525,3 @@ void GameArea::ShowMenuBar()
menu_bar_hidden = false;
#endif
}
-
-// stub HiDPI methods, see macsupport.mm for the Mac support
-#ifndef __WXMAC__
-double HiDPIAware::HiDPIScaleFactor()
-{
- if (hidpi_scale_factor == 0) {
- hidpi_scale_factor = 1.0;
- }
-
- return hidpi_scale_factor;
-}
-
-void HiDPIAware::RequestHighResolutionOpenGLSurface()
-{
-}
-
-void HiDPIAware::GetRealPixelClientSize(int* x, int* y)
-{
- GetWindow()->GetClientSize(x, y);
-}
-#endif // HiDPI stubs
diff --git a/src/wx/visualboyadvance-m.manifest b/src/wx/visualboyadvance-m.manifest
new file mode 100644
index 00000000..5e5f0c6a
--- /dev/null
+++ b/src/wx/visualboyadvance-m.manifest
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PerMonitorV2, system
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/wx/widgets/dpi-support-mac.mm b/src/wx/widgets/dpi-support-mac.mm
new file mode 100644
index 00000000..45f2e25e
--- /dev/null
+++ b/src/wx/widgets/dpi-support-mac.mm
@@ -0,0 +1,47 @@
+#include "widgets/dpi-support.h"
+
+#import
+#import
+
+#include
+
+namespace widgets {
+
+double DPIScaleFactorForWindow(wxWindow* window) {
+#if WX_HAS_NATIVE_HI_DPI_SUPPORT
+ return window->GetDPIScaleFactor();
+#else
+ NSWindow* ns_window = [(NSView*)window->GetHandle() window];
+
+ if ([ns_window respondsToSelector:@selector(backingScaleFactor)]) {
+ return [ns_window backingScaleFactor];
+ }
+ return 1.0;
+#endif // WX_HAS_NATIVE_HI_DPI_SUPPORT
+}
+
+void RequestHighResolutionOpenGlSurfaceForWindow(wxWindow* window) {
+#if !WX_HAS_NATIVE_HI_DPI_SUPPORT
+ NSView* view = (NSView*)(window->GetHandle());
+
+ if ([view respondsToSelector:@selector
+ (setWantsBestResolutionOpenGLSurface:)]) {
+ [view setWantsBestResolutionOpenGLSurface:YES];
+ }
+#endif // !WX_HAS_NATIVE_HI_DPI_SUPPORT
+}
+
+void GetRealPixelClientSize(wxWindow* window, int* x, int* y) {
+#if WX_HAS_NATIVE_HI_DPI_SUPPORT
+ window->GetClientSize(x, y);
+#else
+ NSView* view = (NSView*)(window->GetHandle());
+
+ NSSize backing_size = [view convertSizeToBacking:view.bounds.size];
+
+ *x = backing_size.width;
+ *y = backing_size.height;
+#endif // WX_HAS_NATIVE_HI_DPI_SUPPORT
+}
+
+} // namespace widgets
diff --git a/src/wx/widgets/dpi-support-win.cpp b/src/wx/widgets/dpi-support-win.cpp
new file mode 100644
index 00000000..5c5d87f0
--- /dev/null
+++ b/src/wx/widgets/dpi-support-win.cpp
@@ -0,0 +1,55 @@
+#include "widgets/dpi-support.h"
+
+#include
+#include
+#include
+
+#include
+
+namespace widgets {
+
+double DPIScaleFactorForWindow(wxWindow* window) {
+#if WX_HAS_NATIVE_HI_DPI_SUPPORT
+ return window->GetDPIScaleFactor();
+#else
+ static constexpr double kStandardDpi = 96.0;
+ HWND wnd = window->GetHWND();
+ if (IsWindows10OrGreater()) {
+ // We can't properly resize on DPI/Monitor change, but neither can
+ // wxWidgets so we're consistent.
+ UINT dpi = GetDpiForWindow(wnd);
+ if (dpi != 0) {
+ return static_cast(dpi) / kStandardDpi;
+ }
+ }
+
+ if (IsWindows8Point1OrGreater()) {
+ HMONITOR monitor = MonitorFromWindow(wnd, MONITOR_DEFAULTTONEAREST);
+ UINT xdpi;
+ UINT ydpi;
+ HRESULT success =
+ GetDpiForMonitor(monitor, MDT_EFFECTIVE_DPI, &xdpi, &ydpi);
+ if (success == S_OK) {
+ return static_cast(ydpi) / kStandardDpi;
+ }
+ }
+
+ HDC dc = GetDC(wnd);
+ if (dc == nullptr) {
+ return 1.0;
+ }
+
+ int ydpi = GetDeviceCaps(dc, LOGPIXELSY);
+ ReleaseDC(nullptr, dc);
+
+ return ydpi / kStandardDpi;
+#endif // WX_HAS_NATIVE_HI_DPI_SUPPORT
+}
+
+void RequestHighResolutionOpenGlSurfaceForWindow(wxWindow*) {}
+
+void GetRealPixelClientSize(wxWindow* window, int* x, int* y) {
+ window->GetClientSize(x, y);
+}
+
+} // namespace widgets
diff --git a/src/wx/widgets/dpi-support.cpp b/src/wx/widgets/dpi-support.cpp
new file mode 100644
index 00000000..512ce124
--- /dev/null
+++ b/src/wx/widgets/dpi-support.cpp
@@ -0,0 +1,21 @@
+#include "widgets/dpi-support.h"
+
+#include
+
+namespace widgets {
+
+double DPIScaleFactorForWindow(wxWindow* window) {
+#if WX_HAS_NATIVE_HI_DPI_SUPPORT
+ return window->GetDPIScaleFactor();
+#else
+ return window->GetContentScaleFactor();
+#endif // WX_HAS_NATIVE_HI_DPI_SUPPORT
+}
+
+void RequestHighResolutionOpenGlSurfaceForWindow(wxWindow*) {}
+
+void GetRealPixelClientSize(wxWindow* window, int* x, int* y) {
+ window->GetClientSize(x, y);
+}
+
+} // namespace widgets
diff --git a/src/wx/widgets/dpi-support.h b/src/wx/widgets/dpi-support.h
new file mode 100644
index 00000000..39a33f25
--- /dev/null
+++ b/src/wx/widgets/dpi-support.h
@@ -0,0 +1,23 @@
+#ifndef VBAM_WX_WIDGETS_DPI_SUPPORT_
+#define VBAM_WX_WIDGETS_DPI_SUPPORT_
+
+#include
+
+#if wxCHECK_VERSION(3, 1, 4)
+#define WX_HAS_NATIVE_HI_DPI_SUPPORT 1
+#else
+#define WX_HAS_NATIVE_HI_DPI_SUPPORT 0
+#endif // wxCHECK_VERSION(3,1,4)
+
+// Forward declaration.
+class wxWindow;
+
+namespace widgets {
+
+double DPIScaleFactorForWindow(wxWindow* window);
+void RequestHighResolutionOpenGlSurfaceForWindow(wxWindow* window);
+void GetRealPixelClientSize(wxWindow* window, int* x, int* y);
+
+} // namespace widgets
+
+#endif // VBAM_WX_WIDGETS_DPI_SUPPORT_
diff --git a/src/wx/wxvbam.cpp b/src/wx/wxvbam.cpp
index ba21e807..47cfaf48 100644
--- a/src/wx/wxvbam.cpp
+++ b/src/wx/wxvbam.cpp
@@ -5,6 +5,10 @@
#include "wxvbam.h"
+#ifdef __WXMSW__
+#include
+#endif
+
#include
#include
#include
@@ -35,15 +39,6 @@
IMPLEMENT_APP(wxvbamApp)
IMPLEMENT_DYNAMIC_CLASS(MainFrame, wxFrame)
-#ifdef WIN32_CONSOLE_APP
-#include
-
-int main(int argc, char** argv)
-{
- return WinMain(::GetModuleHandle(NULL), 0, 0, 0);
-}
-#endif
-
#ifndef NO_ONLINEUPDATES
#include "autoupdater/autoupdater.h"
#endif // NO_ONLINEUPDATES
@@ -199,28 +194,36 @@ wxString wxvbamApp::GetAbsolutePath(wxString path)
return path;
}
-#ifdef __WXMSW__
-#include
-#include
-#endif
-
bool wxvbamApp::OnInit()
{
// set up logging
#ifndef NDEBUG
wxLog::SetLogLevel(wxLOG_Trace);
-#endif
+#endif // !NDEBUG
+
#ifdef __WXMSW__
// in windows console mode debug builds, redirect e.g. --help to stderr
#ifndef NDEBUG
wxMessageOutput::Set(new wxMessageOutputStderr());
-#endif
- // turn off output buffering to support windows consoles
- setvbuf(stdout, NULL, _IONBF, 0);
- setvbuf(stderr, NULL, _IONBF, 0);
- // redirect stderr to stdout
- dup2(1, 2);
-#endif
+#endif // !NDEBUG
+
+ bool console_attached = AttachConsole(ATTACH_PARENT_PROCESS) != FALSE;
+#ifndef NDEBUG
+ // In debug builds, create a console if none is attached.
+ if (!console_attached) {
+ console_attached = AllocConsole() != FALSE;
+ }
+#endif // !NDEBUG
+
+ // Redirect stdout/stderr to the console if one is attached.
+ // This code was taken from Dolphin.
+ // https://github.com/dolphin-emu/dolphin/blob/6cf99195c645f54d54c72322ad0312a0e56bc985/Source/Core/DolphinQt/Main.cpp#L112
+ HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
+ if (console_attached && stdout_handle) {
+ freopen("CONOUT$", "w", stdout);
+ freopen("CONOUT$", "w", stderr);
+ }
+#endif // __WXMSW__
using_wayland = IsItWayland();
// use consistent names for config
diff --git a/src/wx/wxvbam.h b/src/wx/wxvbam.h
index a09889df..21cebe22 100644
--- a/src/wx/wxvbam.h
+++ b/src/wx/wxvbam.h
@@ -11,6 +11,7 @@
#include
#include
+#include "widgets/dpi-support.h"
#include "wx/joyedit.h"
#include "wx/keyedit.h"
#include "wx/sdljoy.h"
@@ -388,18 +389,6 @@ private:
#include "cmdhandlers.h"
};
-// helper class to add HiDPI awareness (mostly for Mac OS X)
-class HiDPIAware {
-public:
- HiDPIAware() { hidpi_scale_factor = 0; }
- virtual double HiDPIScaleFactor();
- virtual void RequestHighResolutionOpenGLSurface();
- virtual void GetRealPixelClientSize(int* x, int* y);
- virtual wxWindow* GetWindow() = 0;
-private:
- double hidpi_scale_factor;
-};
-
// a class for polling joystick keys
class JoystickPoller : public wxTimer {
public:
@@ -519,7 +508,7 @@ class DrawingPanelBase;
#include
#endif
-class GameArea : public wxPanel, public HiDPIAware {
+class GameArea : public wxPanel {
public:
GameArea();
virtual ~GameArea();
@@ -641,8 +630,6 @@ public:
void StartGamePlayback(const wxString& fname);
void StopGamePlayback();
- virtual wxWindow* GetWindow() { return this; }
-
protected:
MainFrame* main_frame;
@@ -655,6 +642,7 @@ protected:
int basic_width, basic_height;
bool fullscreen;
+ double dpi_scale_factor_ = 0;
bool paused;
void OnIdle(wxIdleEvent&);
@@ -665,6 +653,9 @@ protected:
void EraseBackground(wxEraseEvent& ev);
void OnSize(wxSizeEvent& ev);
void OnKillFocus(wxFocusEvent& ev);
+#if WX_HAS_NATIVE_HI_DPI_SUPPORT
+ void OnDpiChanged(wxDPIChangedEvent& ev);
+#endif // WX_HAS_NATIVE_HI_DPI_SUPPORT
#ifndef NO_FFMPEG
recording::MediaRecorder snd_rec, vid_rec;
@@ -716,7 +707,7 @@ extern bool cmditem_lt(const struct cmditem& cmd1, const struct cmditem& cmd2);
class FilterThread;
-class DrawingPanelBase : public HiDPIAware {
+class DrawingPanelBase {
public:
DrawingPanelBase(int _width, int _height);
~DrawingPanelBase();
diff --git a/src/wx/wxvbam.rc b/src/wx/wxvbam.rc
index b3dc78e9..9af08767 100644
--- a/src/wx/wxvbam.rc
+++ b/src/wx/wxvbam.rc
@@ -2,6 +2,7 @@
AAAAA_MAINICON ICON "icons/visualboyadvance-m.ico"
+#define wxUSE_NO_MANIFEST 1
#include "wx/msw/wx.rc"
#include "version.h"
@@ -23,6 +24,8 @@ WINSPARKLE_DLL_RC RCDATA WINSPARKLE_DLL_PATH
#endif /* NO_ONLINEUPDATES */
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "visualboyadvance-m.manifest"
+
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION