Skip to content

Commit ead9a98

Browse files
bwikbsswift-kim
authored andcommitted
Add native window handle to platform view (flutter-tizen#136)
* Add native window handle to platform view * This is a preparation to independently handle something(e.g. imf) in platform view. Signed-off-by: MuHong Byun <[email protected]> * Apply review's comment Signed-off-by: MuHong Byun <[email protected]>
1 parent dacda7c commit ead9a98

7 files changed

+37
-15
lines changed

shell/platform/tizen/flutter_tizen.cc

+1
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ void FlutterRegisterViewFactory(
143143
FlutterDesktopPluginRegistrarRef registrar,
144144
const char* view_type,
145145
std::unique_ptr<PlatformViewFactory> view_factory) {
146+
view_factory->SetWindow(registrar->engine->renderer->GetWindowHandle());
146147
registrar->engine->platform_view_channel->ViewFactories().insert(
147148
std::pair<std::string, std::unique_ptr<PlatformViewFactory>>(
148149
view_type, std::move(view_factory)));

shell/platform/tizen/public/flutter_platform_view.h

+25-15
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,18 @@ using ByteMessage = std::vector<uint8_t>;
1616

1717
class PlatformView {
1818
public:
19-
PlatformView(flutter::PluginRegistrar* registrar, int viewId)
20-
: registrar_(registrar),
21-
viewId_(viewId),
22-
textureId_(0),
23-
isFocused_(false) {}
19+
PlatformView(flutter::PluginRegistrar* registrar,
20+
int view_id,
21+
void* platform_window)
22+
: platform_window_(platform_window),
23+
registrar_(registrar),
24+
view_id_(view_id),
25+
texture_id_(0),
26+
is_focused_(false) {}
2427
virtual ~PlatformView() {}
25-
int GetViewId() { return viewId_; }
26-
int GetTextureId() { return textureId_; }
27-
void SetTextureId(int textureId) { textureId_ = textureId; }
28+
int GetViewId() { return view_id_; }
29+
int GetTextureId() { return texture_id_; }
30+
void SetTextureId(int texture_id) { texture_id_ = texture_id; }
2831
flutter::PluginRegistrar* GetPluginRegistrar() { return registrar_; }
2932
virtual void Dispose() = 0;
3033
virtual void Resize(double width, double height) = 0;
@@ -36,8 +39,8 @@ class PlatformView {
3639
double dy) = 0;
3740
virtual void SetDirection(int direction) = 0;
3841
virtual void ClearFocus() = 0;
39-
void SetFocus(bool f) { isFocused_ = f; }
40-
bool IsFocused() { return isFocused_; }
42+
void SetFocus(bool f) { is_focused_ = f; }
43+
bool IsFocused() { return is_focused_; }
4144

4245
// Key input event
4346
virtual void DispatchKeyDownEvent(Ecore_Event_Key* key) = 0;
@@ -47,11 +50,14 @@ class PlatformView {
4750

4851
virtual void SetSoftwareKeyboardContext(Ecore_IMF_Context* context) = 0;
4952

53+
protected:
54+
void* platform_window_;
55+
5056
private:
5157
flutter::PluginRegistrar* registrar_;
52-
int viewId_;
53-
int textureId_;
54-
bool isFocused_;
58+
int view_id_;
59+
int texture_id_;
60+
bool is_focused_;
5561
};
5662

5763
class PlatformViewFactory {
@@ -64,11 +70,15 @@ class PlatformViewFactory {
6470
const flutter::MessageCodec<flutter::EncodableValue>& GetCodec() {
6571
return codec_;
6672
}
67-
virtual PlatformView* Create(int viewId,
73+
virtual PlatformView* Create(int view_id,
6874
double width,
6975
double height,
70-
const ByteMessage& createParams) = 0;
76+
const ByteMessage& parameters) = 0;
7177
virtual void Dispose() = 0;
78+
void SetWindow(void* platform_window) { platform_window_ = platform_window; }
79+
80+
protected:
81+
void* platform_window_;
7282

7383
private:
7484
flutter::PluginRegistrar* registrar_;

shell/platform/tizen/tizen_renderer.h

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class TizenRenderer {
3535
virtual WindowGeometry GetCurrentGeometry() = 0;
3636
virtual int32_t GetDpi() = 0;
3737
virtual uintptr_t GetWindowId() = 0;
38+
virtual void* GetWindowHandle() = 0;
3839

3940
virtual void SetRotate(int angle) = 0;
4041
virtual void ResizeWithRotation(int32_t x,

shell/platform/tizen/tizen_renderer_ecore_wl2.cc

+4
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@ uintptr_t TizenRendererEcoreWl2::GetWindowId() {
232232
return ecore_wl2_window_id_get(ecore_wl2_window_);
233233
}
234234

235+
void* TizenRendererEcoreWl2::GetWindowHandle() {
236+
return ecore_wl2_window_;
237+
}
238+
235239
bool TizenRendererEcoreWl2::InitializeRenderer() {
236240
int32_t width, height;
237241
if (!SetupDisplay(&width, &height)) {

shell/platform/tizen/tizen_renderer_ecore_wl2.h

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class TizenRendererEcoreWl2 : public TizenRenderer {
2828
WindowGeometry GetCurrentGeometry() override;
2929
int32_t GetDpi() override;
3030
uintptr_t GetWindowId() override;
31+
void* GetWindowHandle() override;
3132

3233
void ResizeWithRotation(int32_t x,
3334
int32_t y,

shell/platform/tizen/tizen_renderer_evas_gl.cc

+4
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,10 @@ uintptr_t TizenRendererEvasGL::GetWindowId() {
568568
ecore_evas_ecore_evas_get(evas_object_evas_get(evas_window_)));
569569
}
570570

571+
void* TizenRendererEvasGL::GetWindowHandle() {
572+
return nullptr;
573+
}
574+
571575
Evas_Object* TizenRendererEvasGL::GetImageHandle() {
572576
return graphics_adapter_;
573577
}

shell/platform/tizen/tizen_renderer_evas_gl.h

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class TizenRendererEvasGL : public TizenRenderer {
2929
WindowGeometry GetCurrentGeometry() override;
3030
int32_t GetDpi() override;
3131
uintptr_t GetWindowId() override;
32+
void* GetWindowHandle() override;
3233

3334
void ResizeWithRotation(int32_t x,
3435
int32_t y,

0 commit comments

Comments
 (0)