if (damage_tracker_)
damage_tracker_->RunDrawCallbacks();
+
+ client_ = nullptr;
+ LOG(INFO) << " Done";
}
void Display::Initialize(DisplayClient* client,
#if BUILDFLAG(IS_EFL)
void Display::NotifySwap(const size_t texture_id, bool sync) {
- client_->NotifySwap(texture_id, sync);
+ if (client_)
+ client_->NotifySwap(texture_id, sync);
}
#endif
}
SkiaOutputDeviceOffscreen::~SkiaOutputDeviceOffscreen() {
+#if BUILDFLAG(IS_TIZEN_TV)
+ LOG(INFO);
+ is_destroying = true;
+#endif
DiscardBackbuffer();
#if BUILDFLAG(IS_EFL)
DeleteResizedTextures();
float device_scale_factor,
gfx::OverlayTransform transform) {
DCHECK_EQ(transform, gfx::OVERLAY_TRANSFORM_NONE);
+#if BUILDFLAG(IS_TIZEN_TV)
+ if (is_destroying)
+ return false;
+#endif
DiscardBackbuffer();
size_ = gfx::SkISizeToSize(image_info.dimensions());
sk_color_type_ = image_info.colorType();
&(resized_texture_queue_.front()));
resized_texture_queue_.pop();
}
+ LOG(INFO) << "Release the texture memory done";
}
bool SkiaOutputDeviceOffscreen::NeedSync() {
+#if BUILDFLAG(IS_TIZEN_TV)
+ // Some crash shows notifySwapSync was called while destroying.
+ if (is_destroying)
+ return false;
+#endif
if (!resized_texture_queue_.empty()) {
return true;
}
/*need_framebuffer=*/false);
// Flush GPU tasks and block until all tasks are finished.
FlushGpuTasksWithImpl(SyncMode::kWaitForTasksFinished, impl_on_gpu);
+ LOG(INFO) << " Done";
}
gpu::SurfaceHandle SkiaOutputSurfaceImpl::GetSurfaceHandle() const {