Skip to content

Commit 3de2f6c

Browse files
authored
Cocos2d x 3.3 oh (#20913)
1 parent 925f4c8 commit 3de2f6c

File tree

6 files changed

+51
-9
lines changed

6 files changed

+51
-9
lines changed

cocos/platform/ohos/CCGLViewImpl-ohos.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ class CC_DLL GLViewImpl : public GLView
4040

4141
NS_CC_END
4242
#endif // end of CC_TARGET_PLATFORM == CC_PLATFORM_OHOS
43-
#endif // end of __CC_EGLVIEW_ANDROID_H__
43+
#endif // end of __CC_EGLVIEWIMPL_OHOS_H__

cocos/platform/ohos/napi/helper/NapiHelper.h

+20-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,11 @@ class JSFunction {
114114
napi_value jsArgs[sizeof...(Args)] = {NapiValueConverter::ToNapiValue(env, args)...};
115115
napi_value return_val;
116116
status = napi_call_function(env, global, func, sizeof...(Args), jsArgs, &return_val);
117-
117+
if (status == napi_pending_exception) {
118+
LOGI("Caught invoke exception: napi_pending_exception");
119+
napi_value exception;
120+
napi_get_and_clear_last_exception(env, &exception);
121+
}
118122
ReturnType value;
119123
if (!NapiValueConverter::ToCppValue(env, return_val, value)) {
120124
// Handle error here
@@ -136,6 +140,11 @@ class JSFunction {
136140
napi_value jsArgs[sizeof...(Args)] = {NapiValueConverter::ToNapiValue(env, args)...};
137141
napi_value return_val;
138142
status = napi_call_function(env, global, func, sizeof...(Args), jsArgs, &return_val);
143+
if (status == napi_pending_exception) {
144+
LOGI("Caught invoke exception: napi_pending_exception");
145+
napi_value exception;
146+
napi_get_and_clear_last_exception(env, &exception);
147+
}
139148
}
140149

141150
static void callFunctionWithParams(WorkParam *param) {
@@ -167,6 +176,11 @@ class JSFunction {
167176
}
168177
if (status != napi_ok) {
169178
LOGI("XXXXXX:napi_call_function getClassObject != napi_ok %{public}d", status);
179+
if (status == napi_pending_exception) {
180+
LOGI("Caught invoke exception: napi_pending_exception");
181+
napi_value exception;
182+
napi_get_and_clear_last_exception(env, &exception);
183+
}
170184
}
171185

172186
napi_value thenFunc = nullptr;
@@ -187,6 +201,11 @@ class JSFunction {
187201
status = napi_call_function(env, promise, thenFunc, 1, &successFunc, &ret);
188202
if (status != napi_ok) {
189203
LOGI("XXXXXX:napi_call_function thenFunc failed, ret: %{public}d", status);
204+
if (status == napi_pending_exception) {
205+
LOGI("Caught invoke exception: napi_pending_exception");
206+
napi_value exception;
207+
napi_get_and_clear_last_exception(env, &exception);
208+
}
190209
}
191210
}
192211
// Callback Function Type

cocos/platform/ohos/napi/plugin_manager.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,11 @@ napi_value NapiManager::GetContext(napi_env env, napi_callback_info info) {
5959

6060
int64_t value;
6161
NAPI_CALL(env, napi_get_value_int64(env, args[0], &value));
62-
62+
napi_handle_scope scope = nullptr;
63+
NAPI_CALL(env, napi_open_handle_scope(env, &scope));
64+
if(scope == nullptr){
65+
return nullptr;
66+
}
6367
NAPI_CALL(env, napi_create_object(env, &exports));
6468

6569
switch (value) {
@@ -160,6 +164,7 @@ napi_value NapiManager::GetContext(napi_env env, napi_callback_info info) {
160164
default:
161165
OHOS_LOGE("unknown type");
162166
}
167+
NAPI_CALL(env, napi_close_handle_scope(env, scope));
163168
return exports;
164169
}
165170

cocos/platform/ohos/napi/render/plugin_render.cpp

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <ace/xcomponent/native_xcomponent_key_event.h>
12
#include <stdint.h>
23
#include <unistd.h>
34

@@ -31,7 +32,7 @@ float mousePositionY = -1;
3132
bool isMouseLeftActive = false;
3233
double scrollDistance = 0;
3334

34-
std::unordered_map<int, cocos2d::EventKeyboard::KeyCode> ohKeyMap = {
35+
const std::unordered_map<OH_NativeXComponent_KeyCode, cocos2d::EventKeyboard::KeyCode> ohKeyMap = {
3536
{KEY_ESCAPE, cocos2d::EventKeyboard::KeyCode::KEY_ESCAPE},
3637
{KEY_GRAVE, cocos2d::EventKeyboard::KeyCode::KEY_GRAVE},
3738
{KEY_MINUS, cocos2d::EventKeyboard::KeyCode::KEY_MINUS},
@@ -61,7 +62,23 @@ std::unordered_map<int, cocos2d::EventKeyboard::KeyCode> ohKeyMap = {
6162
{KEY_DPAD_UP, cocos2d::EventKeyboard::KeyCode::KEY_DPAD_UP},
6263
{KEY_SYSRQ, cocos2d::EventKeyboard::KeyCode::KEY_PRINT},
6364
{KEY_INSERT, cocos2d::EventKeyboard::KeyCode::KEY_INSERT},
64-
{KEY_FORWARD_DEL, cocos2d::EventKeyboard::KeyCode::KEY_DELETE}
65+
{KEY_FORWARD_DEL, cocos2d::EventKeyboard::KeyCode::KEY_DELETE},
66+
{KEY_SCROLL_LOCK, cocos2d::EventKeyboard::KeyCode::KEY_SCROLL_LOCK},
67+
{KEY_MINUS, cocos2d::EventKeyboard::KeyCode::KEY_MINUS},
68+
{KEY_AT, cocos2d::EventKeyboard::KeyCode::KEY_AT},
69+
{KEY_PLUS, cocos2d::EventKeyboard::KeyCode::KEY_PLUS},
70+
{KEY_MENU, cocos2d::EventKeyboard::KeyCode::KEY_MENU},
71+
{KEY_BREAK, cocos2d::EventKeyboard::KeyCode::KEY_PAUSE},
72+
{KEY_MOVE_HOME, cocos2d::EventKeyboard::KeyCode::KEY_HOME},
73+
{KEY_MOVE_END, cocos2d::EventKeyboard::KeyCode::KEY_END},
74+
{KEY_PAGE_UP, cocos2d::EventKeyboard::KeyCode::KEY_PG_UP},
75+
{KEY_PAGE_DOWN, cocos2d::EventKeyboard::KeyCode::KEY_PG_DOWN},
76+
{KEY_NUMPAD_ADD, cocos2d::EventKeyboard::KeyCode::KEY_KP_PLUS},
77+
{KEY_NUMPAD_SUBTRACT, cocos2d::EventKeyboard::KeyCode::KEY_KP_MINUS},
78+
{KEY_NUMPAD_MULTIPLY, cocos2d::EventKeyboard::KeyCode::KEY_KP_MULTIPLY},
79+
{KEY_NUMPAD_DIVIDE, cocos2d::EventKeyboard::KeyCode::KEY_KP_DIVIDE},
80+
{KEY_NUMPAD_ENTER, cocos2d::EventKeyboard::KeyCode::KEY_KP_ENTER}
81+
6582
};
6683

6784
cocos2d::EventKeyboard::KeyCode ohKeyCodeToCocosKeyCode(OH_NativeXComponent_KeyCode ohKeyCode)
@@ -81,8 +98,9 @@ cocos2d::EventKeyboard::KeyCode ohKeyCodeToCocosKeyCode(OH_NativeXComponent_KeyC
8198
if (ohKeyCode >= KEY_A && ohKeyCode <= KEY_Z) {
8299
// A - Z
83100
return cocos2d::EventKeyboard::KeyCode(int(cocos2d::EventKeyboard::KeyCode::KEY_A) + (ohKeyCode - KEY_A));
84-
}
85-
return cocos2d::EventKeyboard::KeyCode(ohKeyCode);
101+
}
102+
OHOS_LOGW("Unmapped OH key code: %d", ohKeyCode);
103+
return cocos2d::EventKeyboard::KeyCode::KEY_NONE;
86104
}
87105

88106
void OnSurfaceCreatedCB(OH_NativeXComponent* component, void* window)

0 commit comments

Comments
 (0)