aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--win32/PlatWin.cxx21
1 files changed, 12 insertions, 9 deletions
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx
index f1d6a4fcd..a4b84dc8c 100644
--- a/win32/PlatWin.cxx
+++ b/win32/PlatWin.cxx
@@ -1564,8 +1564,8 @@ void SurfaceD2D::DrawRGBAImage(PRectangle rc, int width, int height, const unsig
if (SUCCEEDED(hr)) {
D2D1_RECT_F rcDestination = {rc.left, rc.top, rc.right, rc.bottom};
pRenderTarget->DrawBitmap(bitmap, rcDestination);
+ bitmap->Release();
}
- bitmap->Release();
}
}
@@ -1669,8 +1669,8 @@ XYPOSITION SurfaceD2D::WidthText(Font &font_, const char *s, int len) {
HRESULT hr = pIDWriteFactory->CreateTextLayout(tbuf.buffer, tbuf.tlen, pTextFormat, 1000.0, 1000.0, &pTextLayout);
if (SUCCEEDED(hr)) {
DWRITE_TEXT_METRICS textMetrics;
- pTextLayout->GetMetrics(&textMetrics);
- width = textMetrics.widthIncludingTrailingWhitespace;
+ if (SUCCEEDED(pTextLayout->GetMetrics(&textMetrics)))
+ width = textMetrics.widthIncludingTrailingWhitespace;
pTextLayout->Release();
}
}
@@ -1694,7 +1694,8 @@ void SurfaceD2D::MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *
if (!SUCCEEDED(hr))
return;
// For now, assuming WCHAR == cluster
- pTextLayout->GetClusterMetrics(clusterMetrics, clusters, &count);
+ if (!SUCCEEDED(pTextLayout->GetClusterMetrics(clusterMetrics, clusters, &count)))
+ return;
FLOAT position = 0.0f;
size_t ti=0;
for (size_t ci=0;ci<count;ci++) {
@@ -1771,8 +1772,8 @@ XYPOSITION SurfaceD2D::WidthChar(Font &font_, char ch) {
HRESULT hr = pIDWriteFactory->CreateTextLayout(&wch, 1, pTextFormat, 1000.0, 1000.0, &pTextLayout);
if (SUCCEEDED(hr)) {
DWRITE_TEXT_METRICS textMetrics;
- pTextLayout->GetMetrics(&textMetrics);
- width = textMetrics.widthIncludingTrailingWhitespace;
+ if (SUCCEEDED(pTextLayout->GetMetrics(&textMetrics)))
+ width = textMetrics.widthIncludingTrailingWhitespace;
pTextLayout->Release();
}
}
@@ -1814,8 +1815,8 @@ XYPOSITION SurfaceD2D::AverageCharWidth(Font &font_) {
pTextFormat, 1000.0, 1000.0, &pTextLayout);
if (SUCCEEDED(hr)) {
DWRITE_TEXT_METRICS textMetrics;
- pTextLayout->GetMetrics(&textMetrics);
- width = textMetrics.width / wcslen(wszAllAlpha);
+ if (SUCCEEDED(pTextLayout->GetMetrics(&textMetrics)))
+ width = textMetrics.width / wcslen(wszAllAlpha);
pTextLayout->Release();
}
}
@@ -1887,7 +1888,9 @@ static RECT RectFromMonitor(HMONITOR hMonitor) {
}
}
RECT rc = {0, 0, 0, 0};
- ::SystemParametersInfoA(SPI_GETWORKAREA, 0, &rc, 0);
+ if (::SystemParametersInfoA(SPI_GETWORKAREA, 0, &rc, 0) == 0) {
+ rc = {0, 0, 0, 0};
+ }
return rc;
}