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:
Martin Kustermann 2023-11-03 23:44:19 +01:00 committed by GitHub
parent cdeb2ddb42
commit 3a49ea0b85
4 changed files with 11 additions and 13 deletions

View File

@ -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)

View File

@ -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_; }

View File

@ -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

View File

@ -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); }