[v2 PATCH] d2d1: Exit earlier on error state from d2d_device_context_DrawGlyphRun().

Nikolay Sivov nsivov at codeweavers.com
Mon Oct 8 07:20:57 CDT 2018


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/d2d1/device.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c
index 1e420514a8..122008592e 100644
--- a/dlls/d2d1/device.c
+++ b/dlls/d2d1/device.c
@@ -1350,11 +1350,14 @@ static void STDMETHODCALLTYPE d2d_device_context_DrawGlyphRun(ID2D1DeviceContext
     DWRITE_TEXT_ANTIALIAS_MODE antialias_mode = DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE;
     IDWriteRenderingParams *rendering_params;
     DWRITE_RENDERING_MODE rendering_mode;
-    HRESULT hr;
+    HRESULT hr = S_OK;
 
     TRACE("iface %p, baseline_origin %s, glyph_run %p, brush %p, measuring_mode %#x.\n",
             iface, debug_d2d_point_2f(&baseline_origin), glyph_run, brush, measuring_mode);
 
+    if (FAILED(context->error.code))
+        return;
+
     rendering_params = context->text_rendering_params ? context->text_rendering_params
             : context->default_text_rendering_params;
 
@@ -1368,26 +1371,29 @@ static void STDMETHODCALLTYPE d2d_device_context_DrawGlyphRun(ID2D1DeviceContext
                 || rendering_mode == DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL
                 || rendering_mode == DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC)
         {
-            d2d_device_context_set_error(context, E_INVALIDARG);
+            hr = E_INVALIDARG;
         }
         break;
     case D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE:
         if (rendering_mode == DWRITE_RENDERING_MODE_ALIASED
                 || rendering_mode == DWRITE_RENDERING_MODE_OUTLINE)
         {
-            d2d_device_context_set_error(context, E_INVALIDARG);
+            hr = E_INVALIDARG;
         }
         break;
     case D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE:
         if (rendering_mode == DWRITE_RENDERING_MODE_ALIASED)
-            d2d_device_context_set_error(context, E_INVALIDARG);
+            hr = E_INVALIDARG;
         break;
     default:
         ;
     }
 
-    if (FAILED(context->error.code))
+    if (FAILED(hr))
+    {
+        d2d_device_context_set_error(context, hr);
         return;
+    }
 
     rendering_mode = DWRITE_RENDERING_MODE_DEFAULT;
     switch (context->drawing_state.textAntialiasMode)
-- 
2.19.1




More information about the wine-devel mailing list