From c6be1a39b4b7d2031e88776f44668ab048ab26e2 Mon Sep 17 00:00:00 2001 From: Marcin Bialek Date: Thu, 9 Dec 2021 14:43:51 +0100 Subject: [PATCH 1/4] Initialize members --- shell/platform/embedder/embedder_task_runner.cc | 1 + shell/platform/glfw/text_input_plugin.cc | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/shell/platform/embedder/embedder_task_runner.cc b/shell/platform/embedder/embedder_task_runner.cc index abbc340db0faf..0bcaba82c1b2f 100644 --- a/shell/platform/embedder/embedder_task_runner.cc +++ b/shell/platform/embedder/embedder_task_runner.cc @@ -14,6 +14,7 @@ EmbedderTaskRunner::EmbedderTaskRunner(DispatchTable table, : TaskRunner(nullptr /* loop implemenation*/), embedder_identifier_(embedder_identifier), dispatch_table_(std::move(table)), + last_baton_(0), placeholder_id_( fml::MessageLoopTaskQueues::GetInstance()->CreateTaskQueue()) { FML_DCHECK(dispatch_table_.post_task_callback); diff --git a/shell/platform/glfw/text_input_plugin.cc b/shell/platform/glfw/text_input_plugin.cc index b0ea79d92170d..da8668b68c38b 100644 --- a/shell/platform/glfw/text_input_plugin.cc +++ b/shell/platform/glfw/text_input_plugin.cc @@ -101,7 +101,8 @@ TextInputPlugin::TextInputPlugin(flutter::BinaryMessenger* messenger) messenger, kChannelName, &flutter::JsonMethodCodec::GetInstance())), - active_model_(nullptr) { + active_model_(nullptr), + client_id_(0) { channel_->SetMethodCallHandler( [this]( const flutter::MethodCall& call, From 84d5ec31fdabf6c82abee2e0771dadc21c1c5458 Mon Sep 17 00:00:00 2001 From: Marcin Bialek Date: Thu, 9 Dec 2021 14:48:30 +0100 Subject: [PATCH 2/4] Check for nullptr There is a check on line 70 if frame is nullptr so probably it should be also checked before frame->Submit(). --- shell/common/shell_test_external_view_embedder.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shell/common/shell_test_external_view_embedder.cc b/shell/common/shell_test_external_view_embedder.cc index 5a8edc19fb45a..f9e48f7734d60 100644 --- a/shell/common/shell_test_external_view_embedder.cc +++ b/shell/common/shell_test_external_view_embedder.cc @@ -64,7 +64,9 @@ SkCanvas* ShellTestExternalViewEmbedder::CompositeEmbeddedView(int view_id) { void ShellTestExternalViewEmbedder::SubmitFrame( GrDirectContext* context, std::unique_ptr frame) { - frame->Submit(); + if (frame) { + frame->Submit(); + } if (frame && frame->SkiaSurface()) { last_submitted_frame_size_ = SkISize::Make(frame->SkiaSurface()->width(), frame->SkiaSurface()->height()); From 931d19b6cbbfcbd66fd6fef7626ad7c5c6ea3c47 Mon Sep 17 00:00:00 2001 From: Marcin Bialek Date: Thu, 20 Jan 2022 13:39:25 +0100 Subject: [PATCH 3/4] fix init order --- shell/platform/glfw/text_input_plugin.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/platform/glfw/text_input_plugin.cc b/shell/platform/glfw/text_input_plugin.cc index da8668b68c38b..705e144d82a41 100644 --- a/shell/platform/glfw/text_input_plugin.cc +++ b/shell/platform/glfw/text_input_plugin.cc @@ -101,8 +101,8 @@ TextInputPlugin::TextInputPlugin(flutter::BinaryMessenger* messenger) messenger, kChannelName, &flutter::JsonMethodCodec::GetInstance())), - active_model_(nullptr), - client_id_(0) { + client_id_(0), + active_model_(nullptr) { channel_->SetMethodCallHandler( [this]( const flutter::MethodCall& call, From d2ac07512baa8947f1764d8aa75752a9c640ee5e Mon Sep 17 00:00:00 2001 From: Marcin Bialek Date: Thu, 27 Jan 2022 14:05:12 +0100 Subject: [PATCH 4/4] fixes after review --- shell/common/shell_test_external_view_embedder.cc | 7 ++++--- shell/platform/embedder/embedder_task_runner.cc | 1 - shell/platform/embedder/embedder_task_runner.h | 2 +- shell/platform/glfw/text_input_plugin.cc | 1 - shell/platform/glfw/text_input_plugin.h | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/shell/common/shell_test_external_view_embedder.cc b/shell/common/shell_test_external_view_embedder.cc index f9e48f7734d60..015709d96f686 100644 --- a/shell/common/shell_test_external_view_embedder.cc +++ b/shell/common/shell_test_external_view_embedder.cc @@ -64,10 +64,11 @@ SkCanvas* ShellTestExternalViewEmbedder::CompositeEmbeddedView(int view_id) { void ShellTestExternalViewEmbedder::SubmitFrame( GrDirectContext* context, std::unique_ptr frame) { - if (frame) { - frame->Submit(); + if (!frame) { + return; } - if (frame && frame->SkiaSurface()) { + frame->Submit(); + if (frame->SkiaSurface()) { last_submitted_frame_size_ = SkISize::Make(frame->SkiaSurface()->width(), frame->SkiaSurface()->height()); } else { diff --git a/shell/platform/embedder/embedder_task_runner.cc b/shell/platform/embedder/embedder_task_runner.cc index 0bcaba82c1b2f..abbc340db0faf 100644 --- a/shell/platform/embedder/embedder_task_runner.cc +++ b/shell/platform/embedder/embedder_task_runner.cc @@ -14,7 +14,6 @@ EmbedderTaskRunner::EmbedderTaskRunner(DispatchTable table, : TaskRunner(nullptr /* loop implemenation*/), embedder_identifier_(embedder_identifier), dispatch_table_(std::move(table)), - last_baton_(0), placeholder_id_( fml::MessageLoopTaskQueues::GetInstance()->CreateTaskQueue()) { FML_DCHECK(dispatch_table_.post_task_callback); diff --git a/shell/platform/embedder/embedder_task_runner.h b/shell/platform/embedder/embedder_task_runner.h index 464b79482c3ed..be11912f2b841 100644 --- a/shell/platform/embedder/embedder_task_runner.h +++ b/shell/platform/embedder/embedder_task_runner.h @@ -75,7 +75,7 @@ class EmbedderTaskRunner final : public fml::TaskRunner { const size_t embedder_identifier_; DispatchTable dispatch_table_; std::mutex tasks_mutex_; - uint64_t last_baton_; + uint64_t last_baton_ = 0; std::unordered_map pending_tasks_; fml::TaskQueueId placeholder_id_; diff --git a/shell/platform/glfw/text_input_plugin.cc b/shell/platform/glfw/text_input_plugin.cc index 705e144d82a41..b0ea79d92170d 100644 --- a/shell/platform/glfw/text_input_plugin.cc +++ b/shell/platform/glfw/text_input_plugin.cc @@ -101,7 +101,6 @@ TextInputPlugin::TextInputPlugin(flutter::BinaryMessenger* messenger) messenger, kChannelName, &flutter::JsonMethodCodec::GetInstance())), - client_id_(0), active_model_(nullptr) { channel_->SetMethodCallHandler( [this]( diff --git a/shell/platform/glfw/text_input_plugin.h b/shell/platform/glfw/text_input_plugin.h index b70399e08fef8..fa5cd6bac086f 100644 --- a/shell/platform/glfw/text_input_plugin.h +++ b/shell/platform/glfw/text_input_plugin.h @@ -53,7 +53,7 @@ class TextInputPlugin : public KeyboardHookHandler { std::unique_ptr> channel_; // The active client id. - int client_id_; + int client_id_ = 0; // The active model. nullptr if not set. std::unique_ptr active_model_;