mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Fix incorrect C++ return value of PictureRecorder::endRecording() (flutter/engine#47645)
The Dart code has the following declaration: ```dart @Native<Void Function(Pointer<Void>, Handle)>(symbol: 'PictureRecorder::endRecording') external void _endRecording(_NativePicture outPicture); ``` => Dart doesn't expect to get a return value, so C++ shouldn't return anything.
This commit is contained in:
parent
cdeb2ddb42
commit
3a49ea0b85
@ -26,13 +26,12 @@ namespace flutter {
|
||||
|
||||
IMPLEMENT_WRAPPERTYPEINFO(ui, Picture);
|
||||
|
||||
fml::RefPtr<Picture> Picture::Create(Dart_Handle dart_handle,
|
||||
sk_sp<DisplayList> display_list) {
|
||||
void Picture::CreateAndAssociateWithDartWrapper(
|
||||
Dart_Handle dart_handle,
|
||||
sk_sp<DisplayList> display_list) {
|
||||
FML_DCHECK(display_list->isUIThreadSafe());
|
||||
auto canvas_picture = fml::MakeRefCounted<Picture>(std::move(display_list));
|
||||
|
||||
canvas_picture->AssociateWithDartWrapper(dart_handle);
|
||||
return canvas_picture;
|
||||
}
|
||||
|
||||
Picture::Picture(sk_sp<DisplayList> display_list)
|
||||
|
||||
@ -20,8 +20,9 @@ class Picture : public RefCountedDartWrappable<Picture> {
|
||||
|
||||
public:
|
||||
~Picture() override;
|
||||
static fml::RefPtr<Picture> Create(Dart_Handle dart_handle,
|
||||
sk_sp<DisplayList> display_list);
|
||||
static void CreateAndAssociateWithDartWrapper(
|
||||
Dart_Handle dart_handle,
|
||||
sk_sp<DisplayList> display_list);
|
||||
|
||||
sk_sp<DisplayList> display_list() const { return display_list_; }
|
||||
|
||||
|
||||
@ -31,20 +31,18 @@ sk_sp<DisplayListBuilder> PictureRecorder::BeginRecording(SkRect bounds) {
|
||||
return display_list_builder_;
|
||||
}
|
||||
|
||||
fml::RefPtr<Picture> PictureRecorder::endRecording(Dart_Handle dart_picture) {
|
||||
void PictureRecorder::endRecording(Dart_Handle dart_picture) {
|
||||
if (!canvas_) {
|
||||
return nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
fml::RefPtr<Picture> picture;
|
||||
|
||||
picture = Picture::Create(dart_picture, display_list_builder_->Build());
|
||||
Picture::CreateAndAssociateWithDartWrapper(dart_picture,
|
||||
display_list_builder_->Build());
|
||||
display_list_builder_ = nullptr;
|
||||
|
||||
canvas_->Invalidate();
|
||||
canvas_ = nullptr;
|
||||
ClearDartWrapper();
|
||||
return picture;
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -22,7 +22,7 @@ class PictureRecorder : public RefCountedDartWrappable<PictureRecorder> {
|
||||
~PictureRecorder() override;
|
||||
|
||||
sk_sp<DisplayListBuilder> BeginRecording(SkRect bounds);
|
||||
fml::RefPtr<Picture> endRecording(Dart_Handle dart_picture);
|
||||
void endRecording(Dart_Handle dart_picture);
|
||||
|
||||
void set_canvas(fml::RefPtr<Canvas> canvas) { canvas_ = std::move(canvas); }
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user