44
55#include " tizen_package_manager_plugin.h"
66
7- #include < Ecore.h>
87#include < flutter/encodable_value.h>
98#include < flutter/event_channel.h>
109#include < flutter/event_sink.h>
1110#include < flutter/event_stream_handler_functions.h>
1211#include < flutter/method_channel.h>
1312#include < flutter/plugin_registrar.h>
1413#include < flutter/standard_method_codec.h>
14+ #include < glib.h>
1515
1616#include < cstdint>
1717#include < memory>
1818#include < string>
1919#include < vector>
2020
21+ #include " log.h"
2122#include " tizen_package_manager.h"
2223
2324namespace {
@@ -244,8 +245,10 @@ class TizenPackageManagerPlugin : public flutter::Plugin {
244245 // TizenPackageManager::GetAllPackagesInfo() is an expensive operation and
245246 // might cause unresponsiveness on low-end devices if run on the platform
246247 // thread.
247- ecore_thread_run (
248- [](void *data, Ecore_Thread *thread) {
248+ GError *error = nullptr ;
249+ GThread *thread = g_thread_try_new (
250+ " flutter_tizen_plugins_tizen_package_manager_all_packages" ,
251+ [](gpointer data) -> gpointer {
249252 auto *result = static_cast <FlMethodResult *>(data);
250253
251254 TizenPackageManager &package_manager =
@@ -264,14 +267,22 @@ class TizenPackageManagerPlugin : public flutter::Plugin {
264267 package_manager.GetLastErrorString ());
265268 }
266269 delete result;
270+ return nullptr ;
267271 },
268- nullptr ,
269- [](void *data, Ecore_Thread *thread) {
270- auto *result = static_cast <FlMethodResult *>(data);
271- result->Error (" Operation failed" , " Failed to start a thread." );
272- delete result;
273- },
274- result.release ());
272+ result.get (), &error);
273+
274+ if (thread == nullptr ) {
275+ LOG_ERROR (" Failed to create a thread: %s" ,
276+ error ? error->message : " unknown error" );
277+ if (error) {
278+ g_error_free (error);
279+ }
280+ result->Error (" Operation failed" , " Failed to start a thread." );
281+ return ;
282+ }
283+
284+ result.release ();
285+ g_thread_unref (thread);
275286 }
276287
277288 void GetPackageSizeInfo (const flutter::EncodableMap *arguments,
0 commit comments