diff --git a/packages/wakelock_plus/CHANGELOG.md b/packages/wakelock_plus/CHANGELOG.md index b2bbcafc6..4e9108e42 100644 --- a/packages/wakelock_plus/CHANGELOG.md +++ b/packages/wakelock_plus/CHANGELOG.md @@ -1,3 +1,7 @@ +## NEXT + +* Use wrapper API. + ## 2.1.5 * Update wakelock_plus to 1.8.0. diff --git a/packages/wakelock_plus/tizen/inc/ftpw_wakelock_plus.h b/packages/wakelock_plus/tizen/inc/ftpw_wakelock_plus.h new file mode 100644 index 000000000..b1c6d3ebc --- /dev/null +++ b/packages/wakelock_plus/tizen/inc/ftpw_wakelock_plus.h @@ -0,0 +1,20 @@ +// Copyright 2026 Samsung Electronics Co., Ltd. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +#ifndef FLUTTER_TIZEN_PLUGINS_WRAPPER_WAKELOCK_PLUS_H_ +#define FLUTTER_TIZEN_PLUGINS_WRAPPER_WAKELOCK_PLUS_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int ftpw_wakelock_plus_screensaver_reset_timeout(void); +int ftpw_wakelock_plus_screensaver_override_reset(bool onoff); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/wakelock_plus/tizen/lib/aarch64/libftpw_wakelock_plus.so b/packages/wakelock_plus/tizen/lib/aarch64/libftpw_wakelock_plus.so new file mode 100755 index 000000000..00e5786fb Binary files /dev/null and b/packages/wakelock_plus/tizen/lib/aarch64/libftpw_wakelock_plus.so differ diff --git a/packages/wakelock_plus/tizen/lib/armel/libftpw_wakelock_plus.so b/packages/wakelock_plus/tizen/lib/armel/libftpw_wakelock_plus.so new file mode 100755 index 000000000..f63856a04 Binary files /dev/null and b/packages/wakelock_plus/tizen/lib/armel/libftpw_wakelock_plus.so differ diff --git a/packages/wakelock_plus/tizen/lib/i586/libftpw_wakelock_plus.so b/packages/wakelock_plus/tizen/lib/i586/libftpw_wakelock_plus.so new file mode 100755 index 000000000..e0971d86b Binary files /dev/null and b/packages/wakelock_plus/tizen/lib/i586/libftpw_wakelock_plus.so differ diff --git a/packages/wakelock_plus/tizen/lib/x86_64/libftpw_wakelock_plus.so b/packages/wakelock_plus/tizen/lib/x86_64/libftpw_wakelock_plus.so new file mode 100755 index 000000000..150f339fd Binary files /dev/null and b/packages/wakelock_plus/tizen/lib/x86_64/libftpw_wakelock_plus.so differ diff --git a/packages/wakelock_plus/tizen/project_def.prop b/packages/wakelock_plus/tizen/project_def.prop index 7c6a87093..99252aedb 100644 --- a/packages/wakelock_plus/tizen/project_def.prop +++ b/packages/wakelock_plus/tizen/project_def.prop @@ -18,3 +18,7 @@ USER_CPP_UNDEFS = USER_INC_DIRS = inc src USER_INC_FILES = USER_CPP_INC_FILES = + +# User libraries +USER_LIB_DIRS += lib/${BUILD_ARCH} +USER_LIBS += ftpw_wakelock_plus diff --git a/packages/wakelock_plus/tizen/src/wakelock_plus_tizen_plugin.cc b/packages/wakelock_plus/tizen/src/wakelock_plus_tizen_plugin.cc index 39ee194c7..aa61cc873 100644 --- a/packages/wakelock_plus/tizen/src/wakelock_plus_tizen_plugin.cc +++ b/packages/wakelock_plus/tizen/src/wakelock_plus_tizen_plugin.cc @@ -4,24 +4,22 @@ #include "wakelock_plus_tizen_plugin.h" -#include #include #include #include #include #include +#include #include #include #include +#include "ftpw_wakelock_plus.h" #include "log.h" namespace { -typedef int (*FuncScreensaverResetTimeout)(void); -typedef int (*FuncScreensaverOverrideReset)(bool onoff); - class WakelockPlusTizenPlugin : public flutter::Plugin { public: static void RegisterWithRegistrar(flutter::PluginRegistrar *registrar) { @@ -46,10 +44,6 @@ class WakelockPlusTizenPlugin : public flutter::Plugin { g_source_remove(timer_id_); timer_id_ = 0; } - if (screensaver_api_handle_) { - dlclose(screensaver_api_handle_); - screensaver_api_handle_ = nullptr; - } } private: @@ -58,7 +52,11 @@ class WakelockPlusTizenPlugin : public flutter::Plugin { std::unique_ptr> result) { const auto &method_name = method_call.method_name(); if (!is_initialized_screensaver_api_) { - InitScreensaverApi(); + int ret = ftpw_wakelock_plus_screensaver_override_reset(false); + if (ret != 0) { + LOG_ERROR("screensaver_override_reset failed: %s", + get_error_message(ret)); + } is_initialized_screensaver_api_ = true; } @@ -67,12 +65,12 @@ class WakelockPlusTizenPlugin : public flutter::Plugin { if (std::holds_alternative(arguments)) { bool enable = std::get(arguments); if (enable) { - if (!screensaver_reset_timeout_) { + int ret = ftpw_wakelock_plus_screensaver_reset_timeout(); + if (ret == -ENOSYS) { result->Error("Not supported", "The screensaver API is not supported."); return; } - int ret = screensaver_reset_timeout_(); if (ret != 0) { result->Error(std::to_string(ret), get_error_message(ret)); return; @@ -101,40 +99,9 @@ class WakelockPlusTizenPlugin : public flutter::Plugin { } } - void InitScreensaverApi() { - screensaver_api_handle_ = dlopen("libcapi-screensaver.so", RTLD_LAZY); - if (!screensaver_api_handle_) { - LOG_ERROR("dlopen failed: %s", dlerror()); - return; - } - screensaver_reset_timeout_ = reinterpret_cast( - dlsym(screensaver_api_handle_, "screensaver_reset_timeout")); - if (!screensaver_reset_timeout_) { - LOG_ERROR("Symbol not found: %s", dlerror()); - return; - } - FuncScreensaverOverrideReset screensaver_override_reset = - reinterpret_cast( - dlsym(screensaver_api_handle_, "screensaver_override_reset")); - if (!screensaver_override_reset) { - LOG_ERROR("Symbol not found: %s", dlerror()); - return; - } - int ret = screensaver_override_reset(false); - if (ret != 0) { - LOG_ERROR("screensaver_override_reset failed: %s", - get_error_message(ret)); - return; - } - } - static gboolean OnResetScreensaverTimeout(gpointer data) { auto *plugin = static_cast(data); - if (!plugin->screensaver_reset_timeout_) { - plugin->timer_id_ = 0; - return G_SOURCE_REMOVE; - } - int ret = plugin->screensaver_reset_timeout_(); + int ret = ftpw_wakelock_plus_screensaver_reset_timeout(); if (ret != 0) { LOG_ERROR("screensaver_reset_timeout failed: %s", get_error_message(ret)); plugin->timer_id_ = 0; @@ -145,9 +112,7 @@ class WakelockPlusTizenPlugin : public flutter::Plugin { } bool is_initialized_screensaver_api_ = false; - void *screensaver_api_handle_ = nullptr; guint timer_id_ = 0; - FuncScreensaverResetTimeout screensaver_reset_timeout_ = nullptr; bool is_enabled_ = false; };