From d4039d3d6652b97708ba39413f4931e63fa4dc19 Mon Sep 17 00:00:00 2001 From: Jack253-png Date: Sun, 1 Jun 2025 09:28:52 +0800 Subject: [PATCH] Harmony port: entrypoint --- src/core/ohos/SDL_ohos.c | 9 +++++++++ src/core/ohos/SDL_ohos.h | 2 ++ src/video/ohos/SDL_ohosvideo.c | 17 ++++++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/core/ohos/SDL_ohos.c b/src/core/ohos/SDL_ohos.c index 8cd2865e4f..6c86dbde5f 100644 --- a/src/core/ohos/SDL_ohos.c +++ b/src/core/ohos/SDL_ohos.c @@ -139,6 +139,15 @@ void OHOS_UnlockPage() SDL_UnlockMutex(g_ohosPageMutex); } +int OHOS_FetchWidth() +{ + return wid; +} +int OHOS_FetchHeight() +{ + return hei; +} + static napi_value minus(napi_env env, napi_callback_info info) { size_t argc = 2; diff --git a/src/core/ohos/SDL_ohos.h b/src/core/ohos/SDL_ohos.h index 476d9a6fab..f95941cd35 100644 --- a/src/core/ohos/SDL_ohos.h +++ b/src/core/ohos/SDL_ohos.h @@ -10,6 +10,8 @@ void OHOS_windowDataFill(SDL_Window* w); void OHOS_removeWindow(SDL_Window* w); void OHOS_LockPage(); void OHOS_UnlockPage(); +int OHOS_FetchWidth(); +int OHOS_FetchHeight(); typedef struct SDL_VideoData { SDL_Rect textRect; diff --git a/src/video/ohos/SDL_ohosvideo.c b/src/video/ohos/SDL_ohosvideo.c index e3482c9f5b..df99a7c97b 100644 --- a/src/video/ohos/SDL_ohosvideo.c +++ b/src/video/ohos/SDL_ohosvideo.c @@ -1,3 +1,5 @@ +#include "SDL3/SDL_pixels.h" +#include "SDL3/SDL_video.h" #include "SDL_internal.h" #include "../SDL_sysvideo.h" @@ -9,6 +11,20 @@ bool OHOS_VideoInit(SDL_VideoDevice *_this) { + _this->num_displays = 1; + SDL_DisplayMode mode; + SDL_zero(mode); + mode.format = SDL_PIXELFORMAT_RGBA32; + mode.w = OHOS_FetchWidth(); + mode.h = OHOS_FetchHeight(); + mode.refresh_rate = 60; + + SDL_DisplayID displayID = SDL_AddBasicVideoDisplay(&mode); + if (displayID == 0) { + return false; + } + _this->displays = SDL_calloc(1, sizeof(SDL_VideoDisplay*)); + _this->displays[0] = SDL_GetVideoDisplay(displayID); return true; } void OHOS_VideoQuit(SDL_VideoDevice *_this) @@ -33,7 +49,6 @@ static SDL_VideoDevice *OHOS_CreateDevice(void) return NULL; } - device->num_displays = 1; device->internal = data; device->free = OHOS_DeviceFree;