[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master e08dfe9a: [graph/win32] Improve error handling.
From: |
Werner Lemberg |
Subject: |
[freetype2-demos] master e08dfe9a: [graph/win32] Improve error handling. |
Date: |
Thu, 2 Feb 2023 10:32:45 -0500 (EST) |
branch: master
commit e08dfe9a5874f0261b025df7428e66dbb9920af7
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>
[graph/win32] Improve error handling.
* graph/win32/grwin32.c (gr_win32_surface_resize): Change return type.
(gr_win32_surface_init): Ditto and handle failure gracefully.
---
graph/win32/grwin32.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/graph/win32/grwin32.c b/graph/win32/grwin32.c
index a0dc7ac7..2f173952 100644
--- a/graph/win32/grwin32.c
+++ b/graph/win32/grwin32.c
@@ -286,7 +286,7 @@ gr_win32_surface_set_icon( grWin32Surface* surface,
*/
-static grWin32Surface*
+static int
gr_win32_surface_resize( grWin32Surface* surface,
int width,
int height )
@@ -327,7 +327,7 @@ gr_win32_surface_resize( grWin32Surface* surface,
surface->bmiHeader.biWidth = width;
surface->bmiHeader.biHeight = -height;
- return surface;
+ return 1;
}
static void
@@ -426,7 +426,7 @@ DWORD WINAPI Window_ThreadProc( LPVOID lpParameter )
}
-static grWin32Surface*
+static int
gr_win32_surface_init( grWin32Surface* surface,
grBitmap* bitmap )
{
@@ -466,9 +466,6 @@ gr_win32_surface_init( grWin32Surface* surface,
surface->root.bitmap.grays = bitmap->grays;
}
- if ( !gr_win32_surface_resize( surface, bitmap->width, bitmap->rows ) )
- return 0;
-
surface->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
surface->bmiHeader.biPlanes = 1;
@@ -533,6 +530,10 @@ gr_win32_surface_init( grWin32Surface* surface,
return 0; /* Unknown mode */
}
+ /* allocate buffers */
+ if ( !gr_win32_surface_resize( surface, bitmap->width, bitmap->rows ) )
+ goto Fail;
+
/* set up the main message queue and spin off the window thread */
PeekMessage( &msg, (HWND)-1, WM_USER, WM_USER, PM_NOREMOVE );
surface->host = GetCurrentThreadId();
@@ -542,7 +543,7 @@ gr_win32_surface_init( grWin32Surface* surface,
/* listen if window is created */
if ( GetMessage ( &msg, (HWND)-1, WM_STATUS, WM_STATUS ) < 0 ||
!msg.wParam )
- return 0;
+ goto Fail;
/* wrap up */
surface->root.done = (grDoneSurfaceFunc) gr_win32_surface_done;
@@ -555,7 +556,11 @@ gr_win32_surface_init( grWin32Surface* surface,
surface->root.bitmap.width, surface->root.bitmap.rows,
surface->bmiHeader.biBitCount ));
- return surface;
+ return 1;
+
+Fail:
+ gr_win32_surface_done( surface );
+ return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master e08dfe9a: [graph/win32] Improve error handling.,
Werner Lemberg <=