Harmony port: review changes

This commit is contained in:
Jack253-png 2025-06-01 06:48:06 +08:00
parent af9601874e
commit 4a0d0685ee
No known key found for this signature in database
GPG key ID: 51EA61206B02D886
4 changed files with 20 additions and 18 deletions

View file

@ -15,13 +15,12 @@
#include "SDL3/SDL_mutex.h"
#include "../../video/ohos/SDL_ohoskeyboard.h"
OHNativeWindow *nativeWindow;
OHNativeWindow *g_ohosNativeWindow;
SDL_Mutex *g_ohosPageMutex = NULL;
static OH_NativeXComponent_Callback callback;
static OH_NativeXComponent_MouseEvent_Callback mouseCallback;
SDL_WindowData windowData;
SDL_VideoData videoData;
struct
static struct
{
napi_env env;
napi_threadsafe_function func;
@ -103,7 +102,7 @@ static napi_value sdlCallbackInit(napi_env env, napi_callback_info info)
static void OnSurfaceCreatedCB(OH_NativeXComponent *component, void *window)
{
nativeWindow = (OHNativeWindow *)window;
g_ohosNativeWindow = (OHNativeWindow *)window;
uint64_t width;
uint64_t height;
@ -112,10 +111,8 @@ static void OnSurfaceCreatedCB(OH_NativeXComponent *component, void *window)
OH_NativeXComponent_GetXComponentSize(component, window, &width, &height);
OH_NativeXComponent_GetXComponentOffset(component, window, &offsetX, &offsetY);
SDL_Log("Native Window: %p", nativeWindow);
SDL_LockMutex(g_ohosPageMutex);
windowData.native_window = nativeWindow;
windowData.native_window = g_ohosNativeWindow;
windowData.width = width;
windowData.height = height;
windowData.x = offsetX;
@ -124,7 +121,7 @@ static void OnSurfaceCreatedCB(OH_NativeXComponent *component, void *window)
}
static void OnSurfaceChangedCB(OH_NativeXComponent *component, void *window)
{
nativeWindow = (OHNativeWindow *)window;
g_ohosNativeWindow = (OHNativeWindow *)window;
uint64_t width;
uint64_t height;
@ -133,10 +130,8 @@ static void OnSurfaceChangedCB(OH_NativeXComponent *component, void *window)
OH_NativeXComponent_GetXComponentSize(component, window, &width, &height);
OH_NativeXComponent_GetXComponentOffset(component, window, &offsetX, &offsetY);
SDL_Log("Native Window: %p", nativeWindow);
SDL_LockMutex(g_ohosPageMutex);
windowData.native_window = nativeWindow;
windowData.native_window = g_ohosNativeWindow;
windowData.width = width;
windowData.height = height;
windowData.x = offsetX;
@ -184,12 +179,14 @@ static void onKeyEvent(OH_NativeXComponent *component, void *window)
}
}
}
// TODO
static void onNativeTouch(OH_NativeXComponent *component, void *window) {}
static void onNativeMouse(OH_NativeXComponent *component, void *window) {}
static void OnDispatchTouchEventCB(OH_NativeXComponent *component, void *window) {}
void OnHoverEvent(OH_NativeXComponent *component, bool isHover) {}
void OnFocusEvent(OH_NativeXComponent *component, void *window) {}
void OnBlurEvent(OH_NativeXComponent *component, void *window) {}
static void OnHoverEvent(OH_NativeXComponent *component, bool isHover) {}
static void OnFocusEvent(OH_NativeXComponent *component, void *window) {}
static void OnBlurEvent(OH_NativeXComponent *component, void *window) {}
static napi_value SDL_OHOS_NAPI_Init(napi_env env, napi_value exports)
{

View file

@ -6,9 +6,8 @@
#include <native_window/external_window.h>
extern SDL_Mutex *g_ohosPageMutex;
extern OHNativeWindow *nativeWindow;
extern OHNativeWindow *g_ohosNativeWindow;
extern SDL_WindowData windowData;
extern SDL_VideoData videoData;
typedef struct SDL_VideoData {
SDL_Rect textRect;

View file

@ -21,13 +21,19 @@ void OHOS_DeviceFree(SDL_VideoDevice *device)
static SDL_VideoDevice *OHOS_CreateDevice(void)
{
SDL_VideoDevice *device;
SDL_VideoData *data;
device = (SDL_VideoDevice *)SDL_calloc(1, sizeof(SDL_VideoDevice));
if (!device) {
return NULL;
}
device->internal = &videoData;
data = (SDL_VideoData *)SDL_calloc(1, sizeof(SDL_VideoData));
if (!data) {
return NULL;
}
device->internal = data;
device->free = OHOS_DeviceFree;
device->VideoInit = OHOS_VideoInit;

View file

@ -111,7 +111,7 @@ bool OHOS_Vulkan_CreateSurface(SDL_VideoDevice *_this,
createInfo.sType = VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS;
createInfo.pNext = NULL;
createInfo.flags = 0;
createInfo.window = nativeWindow;
createInfo.window = g_ohosNativeWindow;
result = vkCreateSurfaceOHOS(instance, &createInfo, NULL, surface);
if (result != VK_SUCCESS) {
SDL_SetError("vkCreateSurfaceOHOS failed: %d", result);