Bug fixes

This commit is contained in:
OmniaX-Dev 2026-05-15 08:29:56 +02:00
parent fb9876ad22
commit 6fb05f77ab
9 changed files with 54 additions and 49 deletions

View file

@ -1 +1 @@
2078 2087

View file

@ -173,6 +173,7 @@ namespace ogfx
ostd::ConsoleOutputHandler m_out; ostd::ConsoleOutputHandler m_out;
GraphicsWindowOutputHandler m_wout; GraphicsWindowOutputHandler m_wout;
const ostd::Stylesheet* m_guiTheme { nullptr }; const ostd::Stylesheet* m_guiTheme { nullptr };
bool m_refreshScreen { true };
private: private:
Color m_clearColor { 10, 10, 10, 255 }; Color m_clearColor { 10, 10, 10, 255 };
@ -190,7 +191,6 @@ namespace ogfx
bool m_visible { true }; bool m_visible { true };
bool m_blockingEvents { false }; bool m_blockingEvents { false };
bool m_resizeable { true }; bool m_resizeable { true };
bool m_refreshScreen { true };
bool m_invertHorizontalScroll { true }; bool m_invertHorizontalScroll { true };
f32 m_systemScale { 1.0f }; f32 m_systemScale { 1.0f };

View file

@ -36,6 +36,7 @@ namespace ogfx
if (m_window != nullptr) return; if (m_window != nullptr) return;
m_window = &window; m_window = &window;
m_renderer.init(window); m_renderer.init(window);
m_renderer.loadDefaultMonoFont(18);
} }
void GraphicsWindowOutputHandler::setMonospaceFont(const String& filePath) void GraphicsWindowOutputHandler::setMonospaceFont(const String& filePath)

View file

@ -166,7 +166,9 @@ namespace ogfx
{ {
if (!m_initialized || !m_fontOpen) return; if (!m_initialized || !m_fontOpen) return;
if (m_font != nullptr) if (m_font != nullptr)
{
TTF_CloseFont(m_font); TTF_CloseFont(m_font);
}
m_font = nullptr; m_font = nullptr;
m_fontOpen = false; m_fontOpen = false;
m_fontSize = DefaultFontSize; m_fontSize = DefaultFontSize;

View file

@ -24,6 +24,7 @@
#include <cstdint> #include <cstdint>
#include <vector> #include <vector>
#include <unordered_map> #include <unordered_map>
#include <limits>
#include <ostd/utils/Defines.hpp> #include <ostd/utils/Defines.hpp>
typedef int8_t i8; typedef int8_t i8;

View file

@ -46,11 +46,3 @@
#include <ostd/utils/Signals.hpp> #include <ostd/utils/Signals.hpp>
#include <ostd/utils/Time.hpp> #include <ostd/utils/Time.hpp>
namespace ostd
{
inline void initialize(void)
{
ostd::SignalHandler::init(true);
}
}

View file

@ -4,34 +4,24 @@
namespace ostd namespace ostd
{ {
void SignalHandler::init(bool allow_reinit)
{
if (m_initialized && !allow_reinit) return;
m_recievers.clear();
m_recievers.reserve(__SIGNAL_BUFFER_START_SIZE);
m_DelegateRecievers.clear();
m_DelegateRecievers.reserve(__DELEGATE_SIGNALS_BUFFER_START_SIZE);
m_initialized = true;
}
void SignalHandler::handleDelegateSignals(void) void SignalHandler::handleDelegateSignals(void)
{ {
for (auto& delegate : m_DelegateRecievers) for (auto& delegate : delegateReceivers())
emitSignal(delegate.id, Signal::Priority::RealTime, delegate.ud); emitSignal(delegate.id, Signal::Priority::RealTime, delegate.ud);
m_DelegateRecievers.clear(); delegateReceivers().clear();
} }
void SignalHandler::emitSignal(u32 signal_id, u8 prio, BaseObject& userData) void SignalHandler::emitSignal(u32 signal_id, u8 prio, BaseObject& userData)
{ {
if (prio == Signal::Priority::Normal) if (prio == Signal::Priority::Normal)
{ {
SignalHandler::m_DelegateRecievers.push_back({ signal_id, userData }); SignalHandler::delegateReceivers().push_back({ signal_id, userData });
return; return;
} }
Signal signal { signal_id, userData, prio }; Signal signal { signal_id, userData, prio };
if (m_recievers.count(signal_id) < 1) if (receivers().count(signal_id) < 1)
return; return;
for (auto& obj : m_recievers[signal_id]) for (auto& obj : receivers()[signal_id])
{ {
obj->__handle_signal(signal); obj->__handle_signal(signal);
if (signal.handled) return; if (signal.handled) return;
@ -40,13 +30,13 @@ namespace ostd
void SignalHandler::connect(BaseObject& object, u32 signal_id) void SignalHandler::connect(BaseObject& object, u32 signal_id)
{ {
m_recievers[signal_id].push_back(&object); receivers()[signal_id].push_back(&object);
} }
void SignalHandler::disconnect(BaseObject& object, u32 signal_id) void SignalHandler::disconnect(BaseObject& object, u32 signal_id)
{ {
auto it = m_recievers.find(signal_id); auto it = receivers().find(signal_id);
if (it == m_recievers.end()) if (it == receivers().end())
return; return;
STDVEC_REMOVE(it->second, &object); STDVEC_REMOVE(it->second, &object);
} }

View file

@ -80,16 +80,36 @@ namespace ostd
inline DelegateSignal(u32 _id, BaseObject& _ud) : id(_id), ud(_ud) { } inline DelegateSignal(u32 _id, BaseObject& _ud) : id(_id), ud(_ud) { }
}; };
public: public:
static void init(bool allow_reinit = false);
static void handleDelegateSignals(void); static void handleDelegateSignals(void);
static void emitSignal(u32 signal_id, u8 prio = Signal::Priority::RealTime, BaseObject& userData = BaseObject::InvalidRef()); static void emitSignal(u32 signal_id, u8 prio = Signal::Priority::RealTime, BaseObject& userData = BaseObject::InvalidRef());
static void connect(BaseObject& object, u32 signal_id); static void connect(BaseObject& object, u32 signal_id);
static void disconnect(BaseObject& object, u32 signal_id); static void disconnect(BaseObject& object, u32 signal_id);
inline static u32 newCustomSignal(u32 sub_id) { return BuiltinSignals::CustomSignalBase + sub_id; } inline static u32 newCustomSignal(u32 sub_id) { return BuiltinSignals::CustomSignalBase + sub_id; }
private:
inline static stdumap<u32, stdvec<BaseObject*>>& receivers(void)
{
static stdumap<u32, stdvec<BaseObject*>> m = [] {
stdumap<u32, stdvec<BaseObject*>> map;
map.reserve(__SIGNAL_BUFFER_START_SIZE);
return map;
}();
return m;
}
inline static stdvec<DelegateSignal>& delegateReceivers(void)
{
static stdvec<DelegateSignal> v = [] {
stdvec<DelegateSignal> vec;
vec.reserve(__DELEGATE_SIGNALS_BUFFER_START_SIZE);
return vec;
}();
return v;
}
private: private:
inline static stdumap<u32, stdvec<BaseObject*>> m_recievers; inline static stdumap<u32, stdvec<BaseObject*>> m_recievers;
inline static stdvec<DelegateSignal> m_DelegateRecievers; inline static stdvec<DelegateSignal> m_delegateRecievers;
inline static constexpr u16 __SIGNAL_BUFFER_START_SIZE { 2048 }; inline static constexpr u16 __SIGNAL_BUFFER_START_SIZE { 2048 };
inline static constexpr u16 __DELEGATE_SIGNALS_BUFFER_START_SIZE { 2048 }; inline static constexpr u16 __DELEGATE_SIGNALS_BUFFER_START_SIZE { 2048 };
inline static bool m_initialized { false }; inline static bool m_initialized { false };

View file

@ -516,7 +516,6 @@ class TestWindow : public Window
i32 main(i32 argc, char** argv) i32 main(i32 argc, char** argv)
{ {
ostd::Random::autoSeed(); ostd::Random::autoSeed();
ostd::initialize();
TestWindow window; TestWindow window;
window.initialize(1200, 900, "OmniaFramework - Test Window"); window.initialize(1200, 900, "OmniaFramework - Test Window");
window.setClearColor({ 0, 0, 0 }); window.setClearColor({ 0, 0, 0 });