Fixed window titles on Windows 95/98/ME SDL-1.2
authorSam Lantinga <slouken@libsdl.org>
Mon, 23 Jul 2007 01:19:56 +0000
branchSDL-1.2
changeset 4088 cbe2f23a1c2b
parent 4087 4867f7f7dd34
child 4089 37345dc3dd83
Fixed window titles on Windows 95/98/ME
src/video/wincommon/SDL_syswm.c
--- a/src/video/wincommon/SDL_syswm.c	Fri Jul 20 08:17:45 2007 +0000
+++ b/src/video/wincommon/SDL_syswm.c	Mon Jul 23 01:19:56 2007 +0000
@@ -217,36 +217,12 @@
 	SetWindowText(SDL_Window, lpszW);
 	SDL_free(lpszW);
 #else
-	/*
-	 * Try loading SetWindowTextW from kernel32.dll first, and if it exists,
-	 *  pass the UCS-2 string to it. If it doesn't, use
-	 *  WideCharToMultiByte(CP_ACP) and hope that the codepage can support the
-	 *  string data in question. This lets us keep binary compatibility with
-	 *  Win95/98/ME but still use saner Unicode on NT-based Windows.
-	 */
-	static int tried_loading = 0;
-	static PtrSetWindowTextW swtw = NULL;
 	Uint16 *lpsz = SDL_iconv_utf8_ucs2(title);
-	if (!tried_loading) {
-		HMODULE dll = LoadLibrary("user32.dll");
-		if (dll != NULL) {
-			swtw = (PtrSetWindowTextW) GetProcAddress(dll, "SetWindowTextW");
-			if (swtw == NULL) {
-				FreeLibrary(dll);
-			}
-		}
-		tried_loading = 1;
-	}
-
-	if (swtw != NULL) {
-		swtw(SDL_Window, lpsz);
-	} else {
-		size_t len = WideCharToMultiByte(CP_ACP, 0, lpsz, -1, NULL, 0, NULL, NULL);
-		char *cvt = SDL_malloc(len + 1);
-		WideCharToMultiByte(CP_ACP, 0, lpsz, -1, cvt, len, NULL, NULL);
-		SetWindowText(SDL_Window, cvt);
-		SDL_free(cvt);
-	}
+	size_t len = WideCharToMultiByte(CP_ACP, 0, lpsz, -1, NULL, 0, NULL, NULL);
+	char *cvt = SDL_stack_alloc(char, len + 1);
+	WideCharToMultiByte(CP_ACP, 0, lpsz, -1, cvt, len, NULL, NULL);
+	SetWindowText(SDL_Window, cvt);
+	SDL_stack_free(cvt);
 	SDL_free(lpsz);
 #endif
 }