Skip to content

Commit 3b09be8

Browse files
committed
Enable arm64 build (flutter-tizen#63)
* Enable arm64 build * Update azure-pipelines.yml * Add the common profile
1 parent c83765b commit 3b09be8

File tree

5 files changed

+36
-12
lines changed

5 files changed

+36
-12
lines changed

azure-pipelines.yml

+24-8
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ jobs:
2323
arch: arm
2424
mode: debug
2525
targetTriple: armv7l-tizen-linux-gnueabi
26+
tizen-arm64-release:
27+
arch: arm64
28+
mode: release
29+
targetTriple: aarch64-tizen-linux-gnu
30+
tizen-arm64-profile:
31+
arch: arm64
32+
mode: profile
33+
targetTriple: aarch64-tizen-linux-gnu
34+
tizen-arm64-debug:
35+
arch: arm64
36+
mode: debug
37+
targetTriple: aarch64-tizen-linux-gnu
2638
tizen-x86-debug:
2739
arch: x86
2840
mode: debug
@@ -80,20 +92,22 @@ jobs:
8092
ninja -C output/tizen40/out/linux_$(mode)_$(arch)
8193
displayName: Build for Tizen 4.0
8294
workingDirectory: $(buildroot)
95+
condition: ne(variables['arch'], 'arm64')
8396
failOnStderr: true
8497
- bash: |
8598
OUTDIR=$(Build.StagingDirectory)
99+
cp default/out/linux_$(mode)_$(arch)/libflutter_engine.so $OUTDIR
86100
cp default/out/linux_$(mode)_$(arch)/libflutter_tizen.so $OUTDIR
87-
cp tizen40/out/linux_$(mode)_$(arch)/libflutter_tizen.so $OUTDIR/libflutter_tizen40.so
88-
cp tizen40/out/linux_$(mode)_$(arch)/libflutter_engine.so $OUTDIR
101+
if [[ "$(arch)" != "arm64" ]]; then
102+
cp tizen40/out/linux_$(mode)_$(arch)/libflutter_tizen.so $OUTDIR/libflutter_tizen40.so
103+
fi
89104
displayName: Copy artifacts
90105
workingDirectory: $(buildroot)/output
91106
failOnStderr: true
92107
- publish: $(Build.StagingDirectory)
93108
artifact: $(System.JobName)
94109
- job: release
95110
dependsOn: build
96-
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
97111
pool:
98112
name: Default
99113
demands: agent.os -equals Linux
@@ -122,12 +136,14 @@ jobs:
122136
cp $(Pipeline.Workspace)/src/third_party/icu/flutter/icudtl.dat common
123137
mv $(Pipeline.Workspace)/tizen-* .
124138
for platform in linux windows darwin; do
125-
for mode in release profile; do
126-
curl -o tmp.zip https://storage.googleapis.com/flutter_infra/flutter/$(upstreamVersion)/android-arm-$mode/$platform-x64.zip 2> /dev/null
127-
unzip tmp.zip -d tizen-arm-$mode/$platform-x64 && rm tmp.zip
139+
for arch in arm arm64; do
140+
for mode in release profile; do
141+
curl -o tmp.zip https://storage.googleapis.com/flutter_infra/flutter/$(upstreamVersion)/android-$arch-$mode/$platform-x64.zip 2> /dev/null
142+
unzip tmp.zip -d tizen-$arch-$mode/$platform-x64 && rm tmp.zip
143+
done
144+
zip -r $(Build.StagingDirectory)/$platform-x64.zip *
145+
rm -r tizen-$arch-*/$platform-x64
128146
done
129-
zip -r $(Build.StagingDirectory)/$platform-x64.zip *
130-
rm -r tizen-arm-*/$platform-x64
131147
done
132148
displayName: Create releases
133149
workingDirectory: $(Build.BinariesDirectory)

shell/platform/tizen/channels/text_input_channel.cc

+3-1
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,10 @@ TextInputChannel::TextInputChannel(flutter::BinaryMessenger* messenger,
277277
imf_context_ = ecore_imf_context_add(GetImfMethod());
278278
}
279279
if (imf_context_) {
280+
// Caution: Conversion between incompatible types (int to void*).
280281
ecore_imf_context_client_window_set(
281-
imf_context_, (void*)engine_->tizen_renderer->GetEcoreWindowId());
282+
imf_context_,
283+
(void*)(intptr_t)(engine_->tizen_renderer->GetEcoreWindowId()));
282284
RegisterIMFCallback();
283285
} else {
284286
FT_LOGE("Failed to create imfContext");

shell/platform/tizen/flutter_tizen.cc

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
#include "public/flutter_tizen.h"
77

8+
#include <inttypes.h>
9+
810
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h"
911
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/standard_message_codec.h"
1012
#include "flutter/shell/platform/common/cpp/incoming_message_dispatcher.h"
@@ -191,12 +193,12 @@ bool FlutterMarkExternalTextureFrameAvailable(
191193
void* tbm_surface) {
192194
auto it = texture_registrar->textures.find(texture_id);
193195
if (it == texture_registrar->textures.end()) {
194-
FT_LOGE("can't find texture texture_id = %lld", texture_id);
196+
FT_LOGE("can't find texture texture_id = %" PRId64, texture_id);
195197
return false;
196198
}
197199
if (!texture_registrar->textures[texture_id]->OnFrameAvailable(
198200
(tbm_surface_h)tbm_surface)) {
199-
FT_LOGE("OnFrameAvailable fail texture_id = %lld", texture_id);
201+
FT_LOGE("OnFrameAvailable fail texture_id = %" PRId64, texture_id);
200202
return false;
201203
}
202204
return (FlutterEngineMarkExternalTextureFrameAvailable(

shell/platform/tizen/tizen_embedder_engine.cc

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ static DeviceProfile GetDeviceProfile() {
2929
return DeviceProfile::kWearable;
3030
} else if (profile == "tv") {
3131
return DeviceProfile::kTV;
32+
} else if (profile == "common") {
33+
return DeviceProfile::kCommon;
3234
}
3335
FT_LOGW("Flutter-tizen is running on an unknown device profile!");
3436
return DeviceProfile::kUnknown;
@@ -265,6 +267,8 @@ void TizenEmbedderEngine::SendWindowMetrics(int32_t width, int32_t height,
265267
profile_factor = 0.7;
266268
} else if (device_profile == DeviceProfile::kTV) {
267269
profile_factor = 2.0;
270+
} else if (device_profile == DeviceProfile::kCommon) {
271+
profile_factor = 0.5;
268272
}
269273
double dpi = device_profile == DeviceProfile::kTV ? 72.0 : device_dpi;
270274
double scale_factor = dpi / 90.0 * profile_factor;

shell/platform/tizen/tizen_embedder_engine.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ struct FlutterTextureRegistrar {
6464

6565
using UniqueAotDataPtr = std::unique_ptr<_FlutterEngineAOTData, AOTDataDeleter>;
6666

67-
enum DeviceProfile { kUnknown, kMobile, kWearable, kTV };
67+
enum DeviceProfile { kUnknown, kMobile, kWearable, kTV, kCommon };
6868

6969
// Manages state associated with the underlying FlutterEngine.
7070
class TizenEmbedderEngine : public TizenRenderer::Delegate {

0 commit comments

Comments
 (0)