mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Move destruction of PictureLayer's SkPicture to the IO thread (flutter/engine#3219)
The picture may hold references to images backed by GPU textures that must be deleted on the IO thread.
This commit is contained in:
parent
77d1df9d19
commit
d9392e7fbb
@ -4,6 +4,7 @@
|
||||
|
||||
#include "flutter/flow/layers/picture_layer.h"
|
||||
|
||||
#include "flutter/common/threads.h"
|
||||
#include "flutter/flow/raster_cache.h"
|
||||
#include "lib/ftl/logging.h"
|
||||
|
||||
@ -11,7 +12,12 @@ namespace flow {
|
||||
|
||||
PictureLayer::PictureLayer() {}
|
||||
|
||||
PictureLayer::~PictureLayer() {}
|
||||
PictureLayer::~PictureLayer() {
|
||||
// The picture may contain references to textures that are associated
|
||||
// with the IO thread's context.
|
||||
SkPicture* picture = picture_.release();
|
||||
blink::Threads::IO()->PostTask([picture]() { picture->unref(); });
|
||||
}
|
||||
|
||||
void PictureLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) {
|
||||
if (auto cache = context->raster_cache) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user