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:
Jason Simmons 2016-11-11 13:43:23 -08:00 committed by GitHub
parent 77d1df9d19
commit d9392e7fbb

View File

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