mirror of
https://gitee.com/openharmony/graphic_graphic_2d
synced 2025-03-01 08:57:43 +00:00
commit
2a16200be4
@ -250,11 +250,13 @@ void RSCanvasDrawingRenderNodeDrawable::ProcessCPURenderInBackgroundThread(std::
|
||||
std::shared_ptr<RSContext> ctx, NodeId nodeId)
|
||||
{
|
||||
auto surface = surface_;
|
||||
RSBackgroundThread::Instance().PostTask([this, cmds, surface, ctx, nodeId]() {
|
||||
if (!cmds || cmds->IsEmpty() || !surface || !ctx) {
|
||||
auto drawable = RSRenderNodeDrawableAdapter::GetDrawableById(nodeId);
|
||||
RSBackgroundThread::Instance().PostTask([drawable, cmds, surface, ctx, nodeId]() {
|
||||
if (!cmds || cmds->IsEmpty() || !surface || !ctx || !drawable) {
|
||||
return;
|
||||
}
|
||||
if (surface != this->surface_) {
|
||||
auto canvasDrawingDrawable = static_cast<DrawableV2::RSCanvasDrawingRenderNodeDrawable*>(drawable.get());
|
||||
if (surface != canvasDrawingDrawable->surface_) {
|
||||
return;
|
||||
}
|
||||
cmds->Playback(*surface->GetCanvas());
|
||||
@ -262,9 +264,9 @@ void RSCanvasDrawingRenderNodeDrawable::ProcessCPURenderInBackgroundThread(std::
|
||||
if (image) {
|
||||
SKResourceManager::Instance().HoldResource(image);
|
||||
}
|
||||
std::lock_guard<std::mutex> lock(this->imageMutex_);
|
||||
this->image_ = image;
|
||||
auto task = [ctx, nodeId = renderNode_->GetId()] () {
|
||||
std::lock_guard<std::mutex> lock(canvasDrawingDrawable->imageMutex_);
|
||||
canvasDrawingDrawable->image_ = image;
|
||||
auto task = [ctx, nodeId] () {
|
||||
if (UNLIKELY(!ctx)) {
|
||||
return;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user