mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-08-08 14:36:32 +02:00
byuu says: Everything *should* be working again, but of course that won't actually be the case. Here's where things stand: - bsnes, higan, icarus, and genius compile and run fine on FreeBSD with GTK - ruby video and audio drivers are untested on Windows, macOS, and Linux - hiro is untested on macOS - bsnes' status bar is not showing up properly with hiro/qt - bsnes and higan's about screen is not showing up properly with hiro/qt (1x1 window size) - bsnes on Windows crashes often when saving states, and I'm not sure why ... it happens inside Encode::RLE - bsnes on Windows crashes with ruby.input.windows (unsure why) - bsnes on Windows fails to show the verified emblem on the status bar properly - hiro on Windows flickers when changing tabs To build the Windows bsnes and higan ports, use ruby="video.gdi audio.directsound" Compilation error logs for Linux will help me fix the inevitable list of typos there. I can fix the typos on other platforms, I just haven't gotten to it yet.
51 lines
841 B
C++
51 lines
841 B
C++
#pragma once
|
|
|
|
//shared functionality used for pObject on all platforms
|
|
|
|
struct Lock {
|
|
struct Handle {
|
|
Handle(const Lock* self) : self(self) {
|
|
if(self) ++self->locks;
|
|
}
|
|
|
|
~Handle() {
|
|
release();
|
|
}
|
|
|
|
auto release() -> bool {
|
|
if(self) {
|
|
--self->locks;
|
|
self = nullptr;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
const Lock* self = nullptr;
|
|
};
|
|
|
|
auto acquired() const -> bool {
|
|
return locks || Application::state().quit;
|
|
}
|
|
|
|
auto acquire() const -> Handle {
|
|
return {this};
|
|
}
|
|
|
|
//deprecated C-style manual functions
|
|
//prefer RAII acquire() functionality instead in newly written code
|
|
auto locked() const -> bool {
|
|
return acquired();
|
|
}
|
|
|
|
auto lock() -> void {
|
|
++locks;
|
|
}
|
|
|
|
auto unlock() -> void {
|
|
--locks;
|
|
}
|
|
|
|
mutable int locks = 0;
|
|
};
|