diff options
| author | Andre Weissflog <floooh@gmail.com> | 2021-04-18 16:48:35 +0200 |
|---|---|---|
| committer | Andre Weissflog <floooh@gmail.com> | 2021-04-18 16:48:35 +0200 |
| commit | 6057fc68bf967e4975b19c7db236d685270e5292 (patch) | |
| tree | d69ea97887164893edaadce7aa426a501d69bd12 | |
| parent | 660b4050ca6104a57c7a95f5f3781f3d046ecc3f (diff) | |
some intermediate code cleanup
| -rw-r--r-- | sokol_app.h | 104 |
1 files changed, 61 insertions, 43 deletions
diff --git a/sokol_app.h b/sokol_app.h index d198d251..195ed457 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -1022,6 +1022,9 @@ enum { SAPP_MAX_ICONIMAGES = 8, }; +/* a window handle */ +typedef struct sapp_window { uint32_t id; } sapp_window; + /* sapp_event_type @@ -2391,38 +2394,38 @@ static _sapp_t _sapp; // forward-declared platform-specific functions #if defined(_SAPP_MACOS) -_SOKOL_PRIVATE void _sapp_macos_init_backend(void); -_SOKOL_PRIVATE void _sapp_macos_discard_backend(void); +_SOKOL_PRIVATE void _sapp_macos_init_state(void); +_SOKOL_PRIVATE void _sapp_macos_discard_state(void); _SOKOL_PRIVATE bool _sapp_macos_create_window(_sapp_window_t* win, const sapp_window_desc* desc); _SOKOL_PRIVATE void _sapp_macos_destroy_window(_sapp_window_t* win); #elif defined(_SAPP_IOS) -_SOKOL_PRIVATE void _sapp_ios_init_backend(void); -_SOKOL_PRIVATE void _sapp_ios_discard_backend(void); +_SOKOL_PRIVATE void _sapp_ios_init_state(void); +_SOKOL_PRIVATE void _sapp_ios_discard_state(void); _SOKOL_PRIVATE bool _sapp_ios_create_window(_sapp_window_t* win, const sapp_window_desc* desc); _SOKOL_PRIVATE void _sapp_ios_destroy_window(_sapp_window_t* win); #elif defined(_SAPP_EMSCRIPTEN) -_SOKOL_PRIVATE void _sapp_emsc_init_backend(void); -_SOKOL_PRIVATE void _sapp_emsc_discard_backend(void); +_SOKOL_PRIVATE void _sapp_emsc_init_state(void); +_SOKOL_PRIVATE void _sapp_emsc_discard_state(void); _SOKOL_PRIVATE bool _sapp_emsc_create_window(_sapp_window_t* win, const sapp_window_desc* desc); _SOKOL_PRIVATE void _sapp_emsc_destroy_window(_sapp_window_t* win); #elif defined(_SAPP_WIN32) -_SOKOL_PRIVATE void _sapp_win32_init_backend(void); -_SOKOL_PRIVATE void _sapp_win32_discard_backend(void); +_SOKOL_PRIVATE void _sapp_win32_init_state(void); +_SOKOL_PRIVATE void _sapp_win32_discard_state(void); _SOKOL_PRIVATE bool _sapp_win32_create_window(_sapp_window_t* win, const sapp_window_desc* desc); _SOKOL_PRIVATE void _sapp_win32_destroy_window(_sapp_window_t* win); #elif defined(_SAPP_UWP) -_SOKOL_PRIVATE void _sapp_uwp_init_backend(void); -_SOKOL_PRIVATE void _sapp_uwp_discard_backend(void); +_SOKOL_PRIVATE void _sapp_uwp_init_state(void); +_SOKOL_PRIVATE void _sapp_uwp_discard_state(void); _SOKOL_PRIVATE bool _sapp_uwp_create_window(_sapp_window_t* win, const sapp_window_desc* desc); _SOKOL_PRIVATE void _sapp_uwp_destroy_window(_sapp_window_t* win); #elif defined(_SAPP_ANDROID) -_SOKOL_PRIVATE void _sapp_android_init_backend(void); -_SOKOL_PRIVATE void _sapp_android_discard_backend(void); +_SOKOL_PRIVATE void _sapp_android_init_state(void); +_SOKOL_PRIVATE void _sapp_android_discard_state(void); _SOKOL_PRIVATE bool _sapp_android_create_window(_sapp_window_t* win, const sapp_window_desc* desc); _SOKOL_PRIVATE void _sapp_android_destroy_window(_sapp_window_t* win); #elif defined(_SAPP_LINUX) -_SOKOL_PRIVATE void _sapp_x11_init_backend(void); -_SOKOL_PRIVATE void _sapp_x11_discard_backend(void); +_SOKOL_PRIVATE void _sapp_x11_init_state(void); +_SOKOL_PRIVATE void _sapp_x11_discard_state(void); _SOKOL_PRIVATE bool _sapp_x11_create_window(_sapp_window_t* win, const sapp_window_desc* desc); _SOKOL_PRIVATE void _sapp_x11_destroy_window(_sapp_window_t* win); #endif @@ -2528,6 +2531,11 @@ _SOKOL_PRIVATE void _sapp_discard_window_pool(_sapp_window_pool_t* window_pool) _sapp_discard_pool(&window_pool->pool); } +_SOKOL_PRIVATE sapp_window _sapp_make_window_id(uint32_t win_id) { + sapp_window res = { win_id }; + return res; +} + /* returns pointer to window by id without matching id check */ _SOKOL_PRIVATE _sapp_window_t* _sapp_window_at(const _sapp_window_pool_t* win_pool, uint32_t win_id) { SOKOL_ASSERT(win_pool && (SAPP_INVALID_ID != win_id)); @@ -2708,42 +2716,52 @@ _SOKOL_PRIVATE sapp_window_desc _sapp_window_defaults(const sapp_window_desc* in return desc; } -_SOKOL_PRIVATE void _sapp_init_backend(void) { +_SOKOL_PRIVATE void _sapp_platform_init_state(void) { #if defined(_SAPP_MACOS) - _sapp_macos_init_backend(); + _sapp_macos_init_state(); #elif defined(_SAPP_IOS) - _sapp_ios_init_backend(); + _sapp_ios_init_state(); #elif defined(_SAPP_EMSCRIPTEN) - _sapp_emsc_init_backend(); + _sapp_emsc_init_state(); #elif defined(_SAPP_WIN32) - _sapp_win32_init_backend(); + _sapp_win32_init_state(); #elif defined(_SAPP_UWP) - _sapp_uwp_init_backend(); + _sapp_uwp_init_state(); #elif defined(_SAPP_ANDROID) - _sapp_android_init_backend(); + _sapp_android_init_state(); #elif defined(_SAPP_LINUX) - _sapp_x11_init_backend(); + _sapp_x11_init_state(); #endif } -_SOKOL_PRIVATE void _sapp_discard_backend(void) { +_SOKOL_PRIVATE void _sapp_platform_discard_state(void) { #if defined(_SAPP_MACOS) - _sapp_macos_discard_backend(); + _sapp_macos_discard_state(); #elif defined(_SAPP_IOS) - _sapp_ios_discard_backend(); + _sapp_ios_discard_state(); #elif defined(_SAPP_EMSCRIPTEN) - _sapp_emsc_discard_backend(); + _sapp_emsc_discard_state(); #elif defined(_SAPP_WIN32) - _sapp_win32_discard_backend(); + _sapp_win32_discard_state(); #elif defined(_SAPP_UWP) - _sapp_uwp_discard_backend(); + _sapp_uwp_discard_state(); #elif defined(_SAPP_ANDROID) - _sapp_android_discard_backend(); + _sapp_android_discard_state(); #elif defined(_SAPP_LINUX) - _sapp_x11_discard_backend(); + _sapp_x11_discard_state(); #endif } +_SOKOL_PRIVATE sapp_window _sapp_open_window(const sapp_window_desc* desc) { + SOKOL_ASSERT(desc); + // FIXME + return _sapp_make_window_id(SAPP_INVALID_ID); +} + +_SOKOL_PRIVATE void _sapp_close_window(sapp_window win_id) { + // FIXME +} + _SOKOL_PRIVATE sapp_desc _sapp_desc_defaults(const sapp_desc* in_desc) { sapp_desc desc = *in_desc; desc.window_pool_size = _sapp_def(desc.window_pool_size, _SAPP_DEFAULT_POOL_SIZE); @@ -2778,8 +2796,8 @@ _SOKOL_PRIVATE void _sapp_init_state(const sapp_desc* desc) { _sapp.window.dpi_scale = 1.0f; _sapp.window.fullscreen = _sapp.desc.window.fullscreen; _sapp.window.mouse.shown = true; - _sapp_setup_window_pool(&_sapp.window_pool, desc); - _sapp_init_backend(); + _sapp_setup_window_pool(&_sapp.window_pool, &_sapp.desc); + _sapp_platform_init_state(); } _SOKOL_PRIVATE void _sapp_discard_state(void) { @@ -2796,7 +2814,7 @@ _SOKOL_PRIVATE void _sapp_discard_state(void) { if (_sapp.default_icon_pixels) { SOKOL_FREE((void*)_sapp.default_icon_pixels); } - _sapp_discard_backend(); + _sapp_platform_discard_state(); _SAPP_CLEAR(_sapp_t, _sapp); } @@ -3135,20 +3153,12 @@ _SOKOL_PRIVATE void _sapp_macos_init_keytable(void) { } /* called from _sapp_init_state() */ -_SOKOL_PRIVATE void _sapp_macos_init_backend(void) { +_SOKOL_PRIVATE void _sapp_macos_init_state(void) { _sapp_macos_init_keytable(); - [NSApplication sharedApplication]; - // set the application dock icon as early as possible, otherwise - // the dummy icon will be visible for a short time - sapp_set_icon(&_sapp.desc.icon); - NSApp.activationPolicy = NSApplicationActivationPolicyRegular; - _sapp.macos.app_delegate = [[_sapp_macos_app_delegate alloc] init]; - NSApp.delegate = _sapp.macos.app_delegate; - [NSApp activateIgnoringOtherApps:YES]; } /* called from _sapp_discard_state() */ -_SOKOL_PRIVATE void _sapp_macos_discard_backend(void) { +_SOKOL_PRIVATE void _sapp_macos_discard_state(void) { // NOTE: it's safe to call [release] on a nil object _SAPP_OBJC_RELEASE(_sapp.macos.win.tracking_area); _SAPP_OBJC_RELEASE(_sapp.macos.win.delegate); @@ -3162,6 +3172,14 @@ _SOKOL_PRIVATE void _sapp_macos_discard_backend(void) { _SOKOL_PRIVATE void _sapp_macos_run(const sapp_desc* desc) { _sapp_init_state(desc); + [NSApplication sharedApplication]; + // set the application dock icon as early as possible, otherwise + // the dummy icon will be visible for a short time + sapp_set_icon(&_sapp.desc.icon); + NSApp.activationPolicy = NSApplicationActivationPolicyRegular; + _sapp.macos.app_delegate = [[_sapp_macos_app_delegate alloc] init]; + NSApp.delegate = _sapp.macos.app_delegate; + [NSApp activateIgnoringOtherApps:YES]; [NSApp run]; // NOTE: [NSApp run] never returns, cleanup code is in applicationWillTerminate instead } |