[UI] Add simple support for controller usage in UI
- Disabled unnecessary hotkeys thread when it is not used - Removed problematic xam_exports static initialization - Moved xam_dialogs_shown_ and xam_nui_dialogs_shown_ to XamState
This commit is contained in:
committed by
Radosław Gliński
parent
2e9c459846
commit
9054a29483
@@ -17,23 +17,6 @@ namespace xe {
|
||||
namespace kernel {
|
||||
namespace xam {
|
||||
|
||||
std::atomic<int> xam_dialogs_shown_ = {0};
|
||||
std::atomic<int> xam_nui_dialogs_shown_ = {0};
|
||||
|
||||
// FixMe(RodoMa92): Same hack as main_init_posix.cc:40
|
||||
// Force initialization before constructor calling, mimicking
|
||||
// Windows.
|
||||
// Ref:
|
||||
// https://reviews.llvm.org/D12689#243295
|
||||
#ifdef XE_PLATFORM_LINUX
|
||||
__attribute__((init_priority(101)))
|
||||
#endif
|
||||
static std::vector<xe::cpu::Export*>
|
||||
xam_exports(4096);
|
||||
|
||||
bool xeXamIsUIActive() { return xam_dialogs_shown_ > 0; }
|
||||
bool xeXamIsNuiUIActive() { return xam_nui_dialogs_shown_ > 0; }
|
||||
|
||||
XamModule::XamModule(Emulator* emulator, KernelState* kernel_state)
|
||||
: KernelModule(kernel_state, "xe:\\xam.xex"), loader_data_() {
|
||||
RegisterExportTable(export_resolver_);
|
||||
@@ -45,7 +28,13 @@ XamModule::XamModule(Emulator* emulator, KernelState* kernel_state)
|
||||
#undef XE_MODULE_EXPORT_GROUP
|
||||
}
|
||||
|
||||
static auto& get_xam_exports() {
|
||||
static std::vector<xe::cpu::Export*> xam_exports(4096);
|
||||
return xam_exports;
|
||||
}
|
||||
|
||||
xe::cpu::Export* RegisterExport_xam(xe::cpu::Export* export_entry) {
|
||||
auto& xam_exports = get_xam_exports();
|
||||
assert_true(export_entry->ordinal < xam_exports.size());
|
||||
xam_exports[export_entry->ordinal] = export_entry;
|
||||
return export_entry;
|
||||
@@ -58,6 +47,7 @@ static constexpr xe::cpu::Export xam_export_table[] = {
|
||||
#include "xenia/kernel/util/export_table_post.inc"
|
||||
void XamModule::RegisterExportTable(xe::cpu::ExportResolver* export_resolver) {
|
||||
assert_not_null(export_resolver);
|
||||
auto& xam_exports = get_xam_exports();
|
||||
|
||||
for (size_t i = 0; i < xe::countof(xam_export_table); ++i) {
|
||||
auto& export_entry = xam_export_table[i];
|
||||
@@ -67,7 +57,7 @@ void XamModule::RegisterExportTable(xe::cpu::ExportResolver* export_resolver) {
|
||||
const_cast<xe::cpu::Export*>(&export_entry);
|
||||
}
|
||||
}
|
||||
export_resolver->RegisterTable("xam.xex", &xam_exports);
|
||||
export_resolver->RegisterTable("xam.xex", &get_xam_exports());
|
||||
}
|
||||
|
||||
XamModule::~XamModule() {}
|
||||
|
||||
Reference in New Issue
Block a user