Skip to content

Commit 298442a

Browse files
committed
share render_task & platform_task runner on darwin
1 parent 7b850b5 commit 298442a

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

embedder/embedder_helper.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ void proxy_post_task_callback(FlutterTask task, uint64_t target_time_nanos,
2424
void proxy_desktop_binary_reply(const uint8_t *data, size_t data_size,
2525
void *user_data);
2626

27+
bool runtime_os_darwin();
28+
29+
static size_t gTaskRunnerIdentifiers = 0;
30+
2731
// C helper
2832
FlutterEngineResult runFlutter(void *user_data, FlutterEngine *engine,
2933
FlutterProjectArgs *Args,
@@ -52,12 +56,17 @@ FlutterEngineResult runFlutter(void *user_data, FlutterEngine *engine,
5256
platform_task_runner.runs_task_on_current_thread_callback =
5357
proxy_runs_task_on_current_thread_callback;
5458
platform_task_runner.post_task_callback = proxy_post_task_callback;
59+
platform_task_runner.identifier = ++gTaskRunnerIdentifiers;
5560

5661
FlutterCustomTaskRunners custom_task_runners = {};
5762
custom_task_runners.struct_size = sizeof(FlutterCustomTaskRunners);
5863
// Render task and platform task are handled by the same TaskRunner
5964
custom_task_runners.platform_task_runner = &platform_task_runner;
60-
custom_task_runners.render_task_runner = &platform_task_runner;
65+
// TODO: Use the same platform and render task runners for all paltform
66+
// (darwin only for now). https://github.com/flutter/flutter/issues/48651
67+
if (runtime_os_darwin()) {
68+
custom_task_runners.render_task_runner = &platform_task_runner;
69+
}
6170
Args->custom_task_runners = &custom_task_runners;
6271

6372
return FlutterEngineRun(FLUTTER_ENGINE_VERSION, &config, Args, user_data,

embedder/embedder_proxy.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package embedder
33
// #include "embedder.h"
44
import "C"
55
import (
6+
"runtime"
67
"unsafe"
78
)
89

@@ -100,3 +101,8 @@ func proxy_desktop_binary_reply(data *C.uint8_t, dataSize C.size_t, userData uns
100101
handler := *(*DataCallback)(unsafe.Pointer(callbackPointer))
101102
handler(C.GoBytes(unsafe.Pointer(data), C.int(dataSize)))
102103
}
104+
105+
//export runtime_os_darwin
106+
func runtime_os_darwin() C.bool {
107+
return C.bool(runtime.GOOS == "darwin")
108+
}

0 commit comments

Comments
 (0)