diff --git a/bsnes/emulator/emulator.hpp b/bsnes/emulator/emulator.hpp index 7293118d..5d2014c3 100644 --- a/bsnes/emulator/emulator.hpp +++ b/bsnes/emulator/emulator.hpp @@ -31,7 +31,7 @@ using namespace nall; namespace Emulator { static const string Name = "bsnes"; - static const string Version = "107.17"; + static const string Version = "107.18"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "https://byuu.org"; diff --git a/bsnes/target-bsnes/input/input.cpp b/bsnes/target-bsnes/input/input.cpp index 297b5075..b40134ea 100644 --- a/bsnes/target-bsnes/input/input.cpp +++ b/bsnes/target-bsnes/input/input.cpp @@ -164,7 +164,7 @@ auto InputMapping::displayName() -> string { //show device IDs to distinguish between multiple joypads path.append("(", hex(mapping.device->id()), ")"); } - if(mapping.device->name() != "Keyboard") { + if(mapping.device->name() != "Keyboard" && mapping.device->name() != "Mouse") { //keyboards only have one group; no need to append group name path.append(".", mapping.device->group(mapping.group).name()); } diff --git a/bsnes/target-bsnes/presentation/presentation.cpp b/bsnes/target-bsnes/presentation/presentation.cpp index f145c37d..efe2f4df 100644 --- a/bsnes/target-bsnes/presentation/presentation.cpp +++ b/bsnes/target-bsnes/presentation/presentation.cpp @@ -263,6 +263,12 @@ auto Presentation::create() -> void { auto Presentation::updateProgramIcon() -> void { presentation.iconLayout.setVisible(!emulator->loaded() && !settings.video.snow); presentation.layout.resize(); + //todo: video.clear() is not working on macOS/OpenGL 3.2 + if(auto [output, length] = video.acquire(1, 1); output) { + *output = 0; + video.release(); + video.output(); + } } auto Presentation::updateStatusIcon() -> void { diff --git a/hiro/gtk/application.cpp b/hiro/gtk/application.cpp index 273e8a8d..c86dd914 100755 --- a/hiro/gtk/application.cpp +++ b/hiro/gtk/application.cpp @@ -1,10 +1,20 @@ #if defined(Hiro_Application) +#include + namespace hiro { auto Log_Ignore(const char* logDomain, GLogLevelFlags logLevel, const char* message, void* userData) -> void { } +auto Log_Filter(const char* logDomain, GLogLevelFlags logLevel, const char* message, void* userData) -> void { + //FreeBSD 12.0: caused by gtk_combo_box_size_allocate() internal function being defective + if(string{message}.find("gtk_widget_size_allocate():")) return; + + //prin all other messages + print(terminal::color::yellow("hiro: "), logDomain, "::", message, "\n"); +} + auto pApplication::modal() -> bool { return Application::state().modal > 0; } @@ -92,6 +102,8 @@ auto pApplication::initialize() -> void { //prevent useless terminal messages: //GVFS-RemoteVolumeMonitor: "invoking List() failed for type GProxyVolumeMonitorHal: method not implemented" g_log_set_handler("GVFS-RemoteVolumeMonitor", G_LOG_LEVEL_MASK, Log_Ignore, nullptr); + //Gtk: gtk_widget_size_allocate(): attempt to allocate widget with (width or height < 1) + g_log_set_handler("Gtk", G_LOG_LEVEL_MASK, Log_Filter, nullptr); //set WM_CLASS to Application::name() auto name = Application::state().name ? Application::state().name : string{"hiro"};