summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/fxge/ge/fx_ge_device.cpp6
-rw-r--r--core/fxge/include/fx_ge.h1
-rw-r--r--core/fxge/skia/fx_skia_device.cpp10
3 files changed, 12 insertions, 5 deletions
diff --git a/core/fxge/ge/fx_ge_device.cpp b/core/fxge/ge/fx_ge_device.cpp
index 571f90cfa1..2f4e0a0eec 100644
--- a/core/fxge/ge/fx_ge_device.cpp
+++ b/core/fxge/ge/fx_ge_device.cpp
@@ -21,6 +21,12 @@ CFX_RenderDevice::CFX_RenderDevice()
CFX_RenderDevice::~CFX_RenderDevice() {}
+#ifdef _SKIA_SUPPORT_
+void CFX_RenderDevice::Flush() {
+ m_pDeviceDriver.reset();
+}
+#endif
+
void CFX_RenderDevice::SetDeviceDriver(
std::unique_ptr<IFX_RenderDeviceDriver> pDriver) {
m_pDeviceDriver = std::move(pDriver);
diff --git a/core/fxge/include/fx_ge.h b/core/fxge/include/fx_ge.h
index aceaa76a94..ce2f9d37e2 100644
--- a/core/fxge/include/fx_ge.h
+++ b/core/fxge/include/fx_ge.h
@@ -382,6 +382,7 @@ class CFX_RenderDevice {
#ifdef _SKIA_SUPPORT_
virtual void DebugVerifyBitmapIsPreMultiplied() const;
+ void Flush();
#endif
private:
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index 5f874e5ffb..3c7ce7ee98 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -1462,7 +1462,8 @@ CFX_FxgeDevice::CFX_FxgeDevice() {
}
SkPictureRecorder* CFX_FxgeDevice::CreateRecorder(int size_x, int size_y) {
- SetDeviceDriver(WrapUnique(new CFX_SkiaDeviceDriver(size_x, size_y)));
+ CFX_SkiaDeviceDriver* skDriver = new CFX_SkiaDeviceDriver(size_x, size_y);
+ SetDeviceDriver(WrapUnique(skDriver));
return skDriver->GetRecorder();
}
@@ -1481,7 +1482,7 @@ bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap,
bool CFX_FxgeDevice::AttachRecorder(SkPictureRecorder* recorder) {
if (!recorder)
return false;
- SetDeviceDriver(new CFX_SkiaDeviceDriver(recorder));
+ SetDeviceDriver(WrapUnique(new CFX_SkiaDeviceDriver(recorder)));
return true;
}
@@ -1496,9 +1497,8 @@ bool CFX_FxgeDevice::Create(int width,
return false;
}
SetBitmap(pBitmap);
- CFX_SkiaDeviceDriver* pDriver =
- new CFX_SkiaDeviceDriver(pBitmap, FALSE, pOriDevice, FALSE);
- SetDeviceDriver(pDriver);
+ SetDeviceDriver(
+ WrapUnique(new CFX_SkiaDeviceDriver(pBitmap, FALSE, pOriDevice, FALSE)));
return true;
}