mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2026-05-10 19:01:53 +00:00
Move WindowHandle to renderer namespace
This commit is contained in:
parent
03e97ef101
commit
1cf5157206
6 changed files with 48 additions and 52 deletions
|
|
@ -42,7 +42,7 @@ namespace recomp {
|
|||
void do_rom_read(uint8_t* rdram, gpr ram_address, uint32_t physical_addr, size_t num_bytes);
|
||||
void do_rom_pio(uint8_t* rdram, gpr ram_address, uint32_t physical_addr);
|
||||
void start(
|
||||
ultramodern::WindowHandle window_handle,
|
||||
ultramodern::renderer::WindowHandle window_handle,
|
||||
const recomp::rsp::callbacks_t& rsp_callbacks,
|
||||
const ultramodern::renderer::callbacks_t& renderer_callbacks,
|
||||
const ultramodern::audio_callbacks_t& audio_callbacks,
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@ void ultramodern::quit() {
|
|||
}
|
||||
|
||||
void recomp::start(
|
||||
ultramodern::WindowHandle window_handle,
|
||||
ultramodern::renderer::WindowHandle window_handle,
|
||||
const recomp::rsp::callbacks_t& rsp_callbacks,
|
||||
const ultramodern::renderer::callbacks_t& renderer_callbacks,
|
||||
const ultramodern::audio_callbacks_t& audio_callbacks,
|
||||
|
|
@ -419,7 +419,7 @@ void recomp::start(
|
|||
gfx_data = gfx_callbacks.create_gfx();
|
||||
}
|
||||
|
||||
if (window_handle == ultramodern::WindowHandle{}) {
|
||||
if (window_handle == ultramodern::renderer::WindowHandle{}) {
|
||||
if (gfx_callbacks.create_window) {
|
||||
window_handle = gfx_callbacks.create_window(gfx_data);
|
||||
}
|
||||
|
|
@ -432,7 +432,7 @@ void recomp::start(
|
|||
std::unique_ptr<uint8_t[]> rdram_buffer = std::make_unique<uint8_t[]>(ultramodern::rdram_size);
|
||||
std::memset(rdram_buffer.get(), 0, ultramodern::rdram_size);
|
||||
|
||||
std::thread game_thread{[](ultramodern::WindowHandle window_handle, uint8_t* rdram) {
|
||||
std::thread game_thread{[](ultramodern::renderer::WindowHandle window_handle, uint8_t* rdram) {
|
||||
debug_printf("[Recomp] Starting\n");
|
||||
|
||||
ultramodern::set_native_thread_name("Game Start Thread");
|
||||
|
|
|
|||
|
|
@ -6,15 +6,49 @@
|
|||
#include <optional>
|
||||
#include <span>
|
||||
|
||||
#if defined(_WIN32)
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <Windows.h>
|
||||
#elif defined(__ANDROID__)
|
||||
# include "android/native_window.h"
|
||||
#elif defined(__linux__)
|
||||
# include "X11/Xlib.h"
|
||||
# undef None
|
||||
# undef Status
|
||||
# undef LockMask
|
||||
# undef Always
|
||||
# undef Success
|
||||
#endif
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "config.hpp"
|
||||
|
||||
namespace ultramodern {
|
||||
|
||||
// TODO: should we move the WindowHandle definition here?
|
||||
struct WindowHandle;
|
||||
|
||||
namespace renderer {
|
||||
|
||||
#if defined(_WIN32)
|
||||
// Native HWND handle to the target window.
|
||||
struct WindowHandle {
|
||||
HWND window;
|
||||
DWORD thread_id = (DWORD)-1;
|
||||
auto operator<=>(const WindowHandle&) const = default;
|
||||
};
|
||||
#elif defined(__ANDROID__)
|
||||
using WindowHandle = ANativeWindow*;
|
||||
#elif defined(__linux__)
|
||||
struct WindowHandle {
|
||||
Display* display;
|
||||
Window window;
|
||||
auto operator<=>(const WindowHandle&) const = default;
|
||||
};
|
||||
#elif defined(__APPLE__)
|
||||
struct WindowHandle {
|
||||
void* window;
|
||||
void* view;
|
||||
auto operator<=>(const WindowHandle&) const = default;
|
||||
};
|
||||
#endif
|
||||
|
||||
enum class SetupResult {
|
||||
Success,
|
||||
DynamicLibrariesNotFound,
|
||||
|
|
@ -69,5 +103,4 @@ namespace ultramodern {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -11,20 +11,6 @@
|
|||
#include "lightweightsemaphore.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
#if defined(_WIN32)
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <Windows.h>
|
||||
#elif defined(__ANDROID__)
|
||||
# include "android/native_window.h"
|
||||
#elif defined(__linux__)
|
||||
# include "X11/Xlib.h"
|
||||
# undef None
|
||||
# undef Status
|
||||
# undef LockMask
|
||||
# undef Always
|
||||
# undef Success
|
||||
#endif
|
||||
|
||||
#include "ultramodern/error_handling.hpp"
|
||||
#include "ultramodern/events.hpp"
|
||||
#include "ultramodern/input.hpp"
|
||||
|
|
@ -39,29 +25,6 @@ struct UltraThreadContext {
|
|||
|
||||
namespace ultramodern {
|
||||
|
||||
#if defined(_WIN32)
|
||||
// Native HWND handle to the target window.
|
||||
struct WindowHandle {
|
||||
HWND window;
|
||||
DWORD thread_id = (DWORD)-1;
|
||||
auto operator<=>(const WindowHandle&) const = default;
|
||||
};
|
||||
#elif defined(__ANDROID__)
|
||||
using WindowHandle = ANativeWindow*;
|
||||
#elif defined(__linux__)
|
||||
struct WindowHandle {
|
||||
Display* display;
|
||||
Window window;
|
||||
auto operator<=>(const WindowHandle&) const = default;
|
||||
};
|
||||
#elif defined(__APPLE__)
|
||||
struct WindowHandle {
|
||||
void* window;
|
||||
void* view;
|
||||
auto operator<=>(const WindowHandle&) const = default;
|
||||
};
|
||||
#endif
|
||||
|
||||
// We need a place in rdram to hold the PI handles, so pick an address in extended rdram
|
||||
constexpr uint32_t rdram_size = 1024 * 1024 * 16; // 16MB to give extra room for anything custom
|
||||
constexpr int32_t cart_handle = 0x80800000;
|
||||
|
|
@ -70,9 +33,9 @@ constexpr int32_t flash_handle = (int32_t)(drive_handle + sizeof(OSPiHandle));
|
|||
constexpr uint32_t save_size = 1024 * 1024 / 8; // Maximum save size, 1Mbit for flash
|
||||
|
||||
// Initialization.
|
||||
void preinit(RDRAM_ARG WindowHandle window_handle);
|
||||
void preinit(RDRAM_ARG renderer::WindowHandle window_handle);
|
||||
void init_saving(RDRAM_ARG1);
|
||||
void init_events(RDRAM_ARG WindowHandle window_handle);
|
||||
void init_events(RDRAM_ARG renderer::WindowHandle window_handle);
|
||||
void init_timers(RDRAM_ARG1);
|
||||
void init_thread_cleanup();
|
||||
|
||||
|
|
@ -149,7 +112,7 @@ struct audio_callbacks_t {
|
|||
struct gfx_callbacks_t {
|
||||
using gfx_data_t = void*;
|
||||
using create_gfx_t = gfx_data_t();
|
||||
using create_window_t = WindowHandle(gfx_data_t);
|
||||
using create_window_t = renderer::WindowHandle(gfx_data_t);
|
||||
using update_gfx_t = void(gfx_data_t);
|
||||
|
||||
create_gfx_t* create_gfx;
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ void ultramodern::trigger_config_action() {
|
|||
|
||||
std::atomic<ultramodern::renderer::SetupResult> renderer_setup_result = ultramodern::renderer::SetupResult::Success;
|
||||
|
||||
void gfx_thread_func(uint8_t* rdram, moodycamel::LightweightSemaphore* thread_ready, ultramodern::WindowHandle window_handle) {
|
||||
void gfx_thread_func(uint8_t* rdram, moodycamel::LightweightSemaphore* thread_ready, ultramodern::renderer::WindowHandle window_handle) {
|
||||
bool enabled_instant_present = false;
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
|
|
@ -497,7 +497,7 @@ void ultramodern::send_si_message(RDRAM_ARG1) {
|
|||
osSendMesg(PASS_RDRAM events_context.si.mq, events_context.si.msg, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void ultramodern::init_events(RDRAM_ARG ultramodern::WindowHandle window_handle) {
|
||||
void ultramodern::init_events(RDRAM_ARG ultramodern::renderer::WindowHandle window_handle) {
|
||||
moodycamel::LightweightSemaphore gfx_thread_ready;
|
||||
moodycamel::LightweightSemaphore task_thread_ready;
|
||||
events_context.rdram = rdram;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ void ultramodern::set_callbacks(
|
|||
ultramodern::error_handling::set_callbacks(error_handling_callbacks);
|
||||
}
|
||||
|
||||
void ultramodern::preinit(RDRAM_ARG ultramodern::WindowHandle window_handle) {
|
||||
void ultramodern::preinit(RDRAM_ARG ultramodern::renderer::WindowHandle window_handle) {
|
||||
ultramodern::set_main_thread();
|
||||
ultramodern::init_events(PASS_RDRAM window_handle);
|
||||
ultramodern::init_timers(PASS_RDRAM1);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue