summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryce Harrington <bryce@osg.samsung.com>2015-12-09 11:02:43 -0800
committerBryce Harrington <bryce@osg.samsung.com>2015-12-09 11:02:43 -0800
commit3372181a17c196af0644abe1b9c63a4b57815c9a (patch)
treebfbcb970aa79d861ff75a546f069d40e213d6267
parent5d336c66ab9fbb64c8dbefbacb2b846aaed1d9e7 (diff)
Revert "win32: Add a win32 boilerplate that uses a real window"
This reverts commit 549e511814c4ebb476b6e45871ab7734f7ca915d. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=92771
-rw-r--r--boilerplate/cairo-boilerplate-win32.c242
1 files changed, 14 insertions, 228 deletions
diff --git a/boilerplate/cairo-boilerplate-win32.c b/boilerplate/cairo-boilerplate-win32.c
index 4fd0a1044..7469cc749 100644
--- a/boilerplate/cairo-boilerplate-win32.c
+++ b/boilerplate/cairo-boilerplate-win32.c
@@ -28,191 +28,15 @@
#include <cairo-win32.h>
-static const cairo_user_data_key_t win32_closure_key;
-
-typedef struct _win32_target_closure {
- HWND wnd;
- HDC dc;
- ATOM bpl_atom;
- cairo_surface_t *surface;
-} win32_target_closure_t;
-
-static void
-_cairo_boilerplate_win32_cleanup_window_surface (void *closure)
-{
- win32_target_closure_t *win32tc = closure;
-
- if (win32tc != NULL)
- {
- if (win32tc->wnd != NULL &&
- ReleaseDC (win32tc->wnd, win32tc->dc) != 1)
- fprintf (stderr,
- "Failed to release DC of a test window when cleaning up.\n");
- if (win32tc->wnd != NULL &&
- DestroyWindow (win32tc->wnd) == 0)
- fprintf (stderr,
- "Failed to destroy a test window when cleaning up, GLE is %lu.\n",
- GetLastError ());
- if (win32tc->bpl_atom != 0 &&
- UnregisterClassA ((LPCSTR) MAKELPARAM (win32tc->bpl_atom, 0), GetModuleHandle (NULL)) == 0 &&
- GetLastError () != ERROR_CLASS_DOES_NOT_EXIST)
- fprintf (stderr,
- "Failed to unregister boilerplate window class, GLE is %lu.\n",
- GetLastError ());
-
- free (win32tc);
- }
-}
-
-static win32_target_closure_t *
-_cairo_boilerplate_win32_create_window (int width,
- int height)
-{
- WNDCLASSEXA wincl;
- win32_target_closure_t *win32tc;
- LPCSTR window_class_name;
-
- ZeroMemory (&wincl, sizeof (WNDCLASSEXA));
- wincl.cbSize = sizeof (WNDCLASSEXA);
- wincl.hInstance = GetModuleHandle (0);
- wincl.lpszClassName = "cairo_boilerplate_win32_dummy";
- wincl.lpfnWndProc = DefWindowProcA;
- wincl.style = CS_OWNDC;
-
- win32tc = calloc (1, sizeof (win32_target_closure_t));
-
- if (win32tc == NULL)
- {
- int error = errno;
- fprintf (stderr, "Ran out of memory: %d.\n", error);
- return NULL;
- }
-
- ZeroMemory (win32tc, sizeof (win32_target_closure_t));
-
- win32tc->bpl_atom = RegisterClassExA (&wincl);
-
- if (win32tc->bpl_atom == 0 && GetLastError () != ERROR_CLASS_ALREADY_EXISTS)
- {
- fprintf (stderr,
- "Failed to register a boilerplate window class, GLE is %lu.\n",
- GetLastError ());
- _cairo_boilerplate_win32_cleanup_window_surface (win32tc);
- return NULL;
- }
-
- if (win32tc->bpl_atom == 0)
- window_class_name = wincl.lpszClassName;
- else
- window_class_name = (LPCSTR) MAKELPARAM (win32tc->bpl_atom, 0);
-
- win32tc->wnd = CreateWindowExA (WS_EX_TOOLWINDOW,
- window_class_name,
- 0,
- WS_POPUP,
- 0,
- 0,
- width,
- height,
- 0,
- 0,
- 0,
- 0);
-
- if (win32tc->wnd == NULL)
- {
- fprintf (stderr,
- "Failed to create a test window, GLE is %lu.\n",
- GetLastError ());
- _cairo_boilerplate_win32_cleanup_window_surface (win32tc);
- return NULL;
- }
-
- win32tc->dc = GetDC (win32tc->wnd);
-
- if (win32tc->dc == NULL)
- {
- fprintf (stderr, "Failed to get test window DC.\n");
- _cairo_boilerplate_win32_cleanup_window_surface (win32tc);
- return NULL;
- }
-
- SetWindowPos (win32tc->wnd,
- HWND_BOTTOM,
- INT_MIN,
- INT_MIN,
- width,
- height,
- SWP_NOACTIVATE | SWP_SHOWWINDOW);
-
- return win32tc;
-}
-
static cairo_surface_t *
-_cairo_boilerplate_win32_create_window_surface (const char *name,
- cairo_content_t content,
- double width,
- double height,
- double max_width,
- double max_height,
- cairo_boilerplate_mode_t mode,
- void **closure)
-{
- win32_target_closure_t *win32tc;
- cairo_surface_t *surface;
- cairo_format_t format;
- cairo_status_t status;
-
- win32tc = _cairo_boilerplate_win32_create_window (width, height);
-
- if (win32tc == NULL)
- return NULL;
-
- format = cairo_boilerplate_format_from_content (content);
-
- surface = cairo_win32_surface_create_with_format (win32tc->dc, format);
-
- win32tc->surface = surface;
-
- status = cairo_surface_status (surface);
-
- if (status != CAIRO_STATUS_SUCCESS)
- {
- fprintf (stderr,
- "Failed to create the test surface: %s [%d].\n",
- cairo_status_to_string (status), status);
- _cairo_boilerplate_win32_cleanup_window_surface (win32tc);
- return NULL;
- }
-
- status = cairo_surface_set_user_data (surface, &win32_closure_key, win32tc, NULL);
-
- if (status != CAIRO_STATUS_SUCCESS)
- {
- fprintf (stderr,
- "Failed to set surface userdata: %s [%d].\n",
- cairo_status_to_string (status), status);
-
- cairo_surface_destroy (surface);
- _cairo_boilerplate_win32_cleanup_window_surface (win32tc);
-
- return NULL;
- }
-
- *closure = win32tc;
-
- return surface;
-}
-
-static cairo_surface_t *
-_cairo_boilerplate_win32_create_dib_surface (const char *name,
- cairo_content_t content,
- double width,
- double height,
- double max_width,
- double max_height,
- cairo_boilerplate_mode_t mode,
- void **closure)
+_cairo_boilerplate_win32_create_surface (const char *name,
+ cairo_content_t content,
+ double width,
+ double height,
+ double max_width,
+ double max_height,
+ cairo_boilerplate_mode_t mode,
+ void **closure)
{
cairo_format_t format;
@@ -228,16 +52,12 @@ static const cairo_boilerplate_target_t targets[] = {
"win32", "win32", NULL, NULL,
CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR, 0,
"cairo_win32_surface_create_with_dib",
- _cairo_boilerplate_win32_create_dib_surface,
+ _cairo_boilerplate_win32_create_surface,
cairo_surface_create_similar,
- NULL,
- NULL,
+ NULL, NULL,
_cairo_boilerplate_get_image_surface,
cairo_surface_write_to_png,
- NULL,
- NULL,
- NULL,
- TRUE, FALSE, FALSE
+ NULL, NULL, NULL, TRUE, FALSE, FALSE
},
/* Testing the win32 surface isn't interesting, since for
* ARGB images it just chains to the image backend
@@ -246,46 +66,12 @@ static const cairo_boilerplate_target_t targets[] = {
"win32", "win32", NULL, NULL,
CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR_ALPHA, 0,
"cairo_win32_surface_create_with_dib",
- _cairo_boilerplate_win32_create_dib_surface,
- cairo_surface_create_similar,
- NULL,
- NULL,
- _cairo_boilerplate_get_image_surface,
- cairo_surface_write_to_png,
- NULL,
- NULL,
- NULL,
- FALSE, FALSE, FALSE
- },
- {
- "win32-window-color", "win32", NULL, NULL,
- CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR, 1,
- "cairo_win32_surface_create",
- _cairo_boilerplate_win32_create_window_surface,
- cairo_surface_create_similar,
- NULL,
- NULL,
- _cairo_boilerplate_get_image_surface,
- cairo_surface_write_to_png,
- _cairo_boilerplate_win32_cleanup_window_surface,
- NULL,
- NULL,
- FALSE, FALSE, FALSE
- },
- {
- "win32-window-coloralpha", "win32", NULL, NULL,
- CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR_ALPHA, 1,
- "cairo_win32_surface_create_with_format",
- _cairo_boilerplate_win32_create_window_surface,
+ _cairo_boilerplate_win32_create_surface,
cairo_surface_create_similar,
- NULL,
- NULL,
+ NULL, NULL,
_cairo_boilerplate_get_image_surface,
cairo_surface_write_to_png,
- _cairo_boilerplate_win32_cleanup_window_surface,
- NULL,
- NULL,
- FALSE, FALSE, FALSE
+ NULL, NULL, NULL, FALSE, FALSE, FALSE
},
};
CAIRO_BOILERPLATE (win32, targets)