Various fixes for win32, mostly as a result of the splits.
This commit is contained in:
parent
7ce606ea61
commit
2982961f38
7 changed files with 41 additions and 38 deletions
|
|
@ -29,30 +29,24 @@
|
|||
*/
|
||||
|
||||
#ifdef WIN32
|
||||
/* Horrible, dangerous macros. */
|
||||
/*
|
||||
The SDL stderr redirection trick doesn't seem to work for perror().
|
||||
This does pretty much the same thing.
|
||||
*/
|
||||
static void win32_perror(const char * const str)
|
||||
{
|
||||
if ( str && *str )
|
||||
fprintf(stderr,"%s : ",str);
|
||||
fprintf(stderr,
|
||||
"%s [%d]\n",
|
||||
(errno<_sys_nerr)?_sys_errlist[errno]:"unknown",errno );
|
||||
}
|
||||
#define perror win32_perror
|
||||
#define perror(str) ({ \
|
||||
if ( (str) && *(str) ) \
|
||||
fprintf(stderr,"%s : ",(str)); \
|
||||
fprintf(stderr, \
|
||||
"%s [%d]\n", \
|
||||
(errno<_sys_nerr)?_sys_errlist[errno]:"unknown",errno ); \
|
||||
})
|
||||
|
||||
/*
|
||||
MinGW implementation of isspace() crashes on some Win98 boxes
|
||||
if c is 'out-of-range'.
|
||||
*/
|
||||
|
||||
static int win32_isspace(int c)
|
||||
{
|
||||
return (c == 0x20) || (c >= 0x09 && c <= 0x0D);
|
||||
}
|
||||
#define isspace win32_isspace
|
||||
#define isspace(c) (((c) == 0x20) || ((c) >= 0x09 && (c) <= 0x0D))
|
||||
|
||||
/*
|
||||
WIN32 and MINGW don't have strcasestr().
|
||||
|
|
@ -109,7 +103,9 @@ static int win32_isspace(int c)
|
|||
// won't alias anything, and aligned enough for anything
|
||||
#define MALLOC __attribute__ ((__malloc__))
|
||||
// no side effect, may read globals
|
||||
#ifndef WIN32
|
||||
#define PURE __attribute__ ((__pure__))
|
||||
#endif
|
||||
// tell gcc what to expect: if(unlikely(err)) die(err);
|
||||
#define likely(x) __builtin_expect(!!(x),1)
|
||||
#define unlikely(x) __builtin_expect(!!(x),0)
|
||||
|
|
|
|||
|
|
@ -11,12 +11,7 @@
|
|||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
#include <unistd.h>
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
|
||||
#include "SDL_ttf.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,9 @@
|
|||
#include "get_fname.h"
|
||||
#include "debug.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include "win32_print.h"
|
||||
#endif
|
||||
|
||||
#ifdef FORKED_FONTS
|
||||
|
||||
|
|
@ -446,7 +449,7 @@ int load_user_fonts(SDL_Surface * screen, void *vp)
|
|||
{
|
||||
#ifdef WIN32
|
||||
homedirdir = GetSystemFontDir();
|
||||
loadfonts(homedirdir);
|
||||
loadfonts(screen, homedirdir);
|
||||
free(homedirdir);
|
||||
#elif defined(__BEOS__)
|
||||
loadfonts(screen, "/boot/home/config/font/ttffonts");
|
||||
|
|
|
|||
15
src/fonts.h
15
src/fonts.h
|
|
@ -22,9 +22,22 @@
|
|||
#ifndef FORKED_FONTS
|
||||
#include "SDL_thread.h"
|
||||
#include "SDL_mutex.h"
|
||||
#else
|
||||
/* This shouldn't really be here :-)
|
||||
* Move into 'fonts.c' and the code in 'tuxpaint.c'
|
||||
* that uses this lot should be put into 'fonts.c' as well.
|
||||
*/
|
||||
#define SDL_CreateThread(fn,vp) (void*)(long)(fn(vp))
|
||||
#define SDL_WaitThread(tid,rcp) do{(void)tid;(void)rcp;}while(0)
|
||||
#define SDL_Thread int
|
||||
#define SDL_mutex int
|
||||
#define SDL_CreateMutex() 0 // creates in released state
|
||||
#define SDL_DestroyMutex(lock)
|
||||
#define SDL_mutexP(lock) // take lock
|
||||
#define SDL_mutexV(lock) // release lock
|
||||
#endif
|
||||
|
||||
extern SDL_Thread *font_thread;
|
||||
#endif
|
||||
|
||||
extern volatile long font_thread_done, font_thread_aborted;
|
||||
extern volatile long waiting_for_fonts;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@
|
|||
#include "i18n.h"
|
||||
#include "debug.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
/* Globals: */
|
||||
|
||||
|
|
|
|||
|
|
@ -309,20 +309,6 @@ extern WrapperData macosx;
|
|||
#define FNAME_EXTENSION ".bmp"
|
||||
#endif
|
||||
|
||||
#if defined(THREADED_FONTS) || defined(THREADED_STAMPS)
|
||||
#include "SDL_thread.h"
|
||||
#include "SDL_mutex.h"
|
||||
#else
|
||||
#define SDL_CreateThread(fn,vp) (void*)(long)(fn(vp))
|
||||
#define SDL_WaitThread(tid,rcp) do{(void)tid;(void)rcp;}while(0)
|
||||
#define SDL_Thread int
|
||||
#define SDL_mutex int
|
||||
#define SDL_CreateMutex() 0 // creates in released state
|
||||
#define SDL_DestroyMutex(lock)
|
||||
#define SDL_mutexP(lock) // take lock
|
||||
#define SDL_mutexV(lock) // release lock
|
||||
#endif
|
||||
|
||||
#include "SDL_getenv.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
|
@ -5307,6 +5293,11 @@ static void load_stamps(SDL_Surface * screen)
|
|||
}
|
||||
|
||||
|
||||
static int load_user_fonts_stub(void *vp)
|
||||
{
|
||||
return load_user_fonts(screen, vp);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/* Setup: */
|
||||
|
||||
|
|
@ -6189,7 +6180,7 @@ static void setup(int argc, char * argv[])
|
|||
#ifdef FORKED_FONTS
|
||||
reliable_write(font_socket_fd, &no_system_fonts, sizeof no_system_fonts);
|
||||
#else
|
||||
font_thread = SDL_CreateThread(load_user_fonts, NULL);
|
||||
font_thread = SDL_CreateThread(load_user_fonts_stub, NULL);
|
||||
#endif
|
||||
|
||||
// continuing on with the rest of the cursors...
|
||||
|
|
@ -6711,8 +6702,10 @@ static void create_button_labels(void)
|
|||
|
||||
static void seticon(void)
|
||||
{
|
||||
#ifndef WIN32
|
||||
int masklen;
|
||||
Uint8 * mask;
|
||||
#endif
|
||||
SDL_Surface * icon;
|
||||
|
||||
/* Load icon into a surface: */
|
||||
|
|
|
|||
|
|
@ -538,7 +538,7 @@ char *GetDefaultSaveDir(const char *suffix)
|
|||
Returns heap string containing system font directory.
|
||||
E.g. 'C:\Windows\Fonts'
|
||||
*/
|
||||
char *GetSystemFontDir()
|
||||
char *GetSystemFontDir(void)
|
||||
{
|
||||
char path[MAX_PATH];
|
||||
const char *key = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue