X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fx11.c;h=3ee9b582a2e59ad949801e95062b27f18429a3e7;hb=ff56a43aa3799aa3357f4deca4d6482fc25a6a41;hp=5d77d49d7f62244c549d7b157f5a27c9406a01dd;hpb=e6bde4abb3952d4689917ce66d6bde79cd8df7fc;p=rocksndiamonds.git diff --git a/src/libgame/x11.c b/src/libgame/x11.c index 5d77d49d..3ee9b582 100644 --- a/src/libgame/x11.c +++ b/src/libgame/x11.c @@ -1,32 +1,21 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Artsoft Retro-Game Library * *----------------------------------------------------------* -* ©1995 Artsoft Development * -* Holger Schemel * -* 33659 Bielefeld-Senne * -* Telefon: (0521) 493245 * -* eMail: aeglos@valinor.owl.de * -* aeglos@uni-paderborn.de * -* q99492@pbhrzx.uni-paderborn.de * +* (c) 1994-2000 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* x11.c * +* x11.c * ***********************************************************/ -#include "libgame.h" +#include "system.h" +#include "misc.h" -#if defined(TARGET_X11) - -#if 0 -#include "main_TMP.h" -#endif -#if 0 -struct IconFileInfo -{ - char *picture_filename; - char *picturemask_filename; -}; -#endif +#if defined(TARGET_X11) static void X11InitDisplay(); static DrawWindow X11InitWindow(); @@ -44,7 +33,7 @@ inline void X11InitVideoBuffer(DrawBuffer *backbuffer, DrawWindow *window) { *window = X11InitWindow(); - XMapWindow(display, *window); + XMapWindow(display, (*window)->drawable); FlushDisplay(); /* create additional (off-screen) buffer for double-buffering */ @@ -99,7 +88,7 @@ static void X11InitDisplay() static DrawWindow X11InitWindow() { - Window window; + DrawWindow new_window = CreateBitmapStruct(); unsigned int border_width = 4; XGCValues gc_values; unsigned long gc_valuemask; @@ -139,15 +128,17 @@ static DrawWindow X11InitWindow() win_xpos = (screen_width - width) / 2; win_ypos = (screen_height - height) / 2; - window = XCreateSimpleWindow(display, RootWindow(display, screen), - win_xpos, win_ypos, width, height, border_width, - pen_fg, pen_bg); + new_window->drawable = XCreateSimpleWindow(display, + RootWindow(display, screen), + win_xpos, win_ypos, + width, height, border_width, + pen_fg, pen_bg); #if !defined(PLATFORM_MSDOS) proto_atom = XInternAtom(display, "WM_PROTOCOLS", FALSE); delete_atom = XInternAtom(display, "WM_DELETE_WINDOW", FALSE); if ((proto_atom != None) && (delete_atom != None)) - XChangeProperty(display, window, proto_atom, XA_ATOM, 32, + XChangeProperty(display, new_window->drawable, proto_atom, XA_ATOM, 32, PropModePrepend, (unsigned char *) &delete_atom, 1); #if 0 @@ -155,7 +146,7 @@ static DrawWindow X11InitWindow() options.ro_base_directory, GRAPHICS_DIRECTORY, icon_pic.picture_filename); #endif - XReadBitmapFile(display, window, program.x11_icon_filename, + XReadBitmapFile(display, new_window->drawable, program.x11_icon_filename, &icon_width, &icon_height, &icon_pixmap, &icon_hot_x, &icon_hot_y); if (!icon_pixmap) @@ -166,7 +157,7 @@ static DrawWindow X11InitWindow() options.ro_base_directory, GRAPHICS_DIRECTORY, icon_pic.picturemask_filename); #endif - XReadBitmapFile(display, window, program.x11_iconmask_filename, + XReadBitmapFile(display, new_window->drawable, program.x11_iconmask_filename, &icon_width, &icon_height, &iconmask_pixmap, &icon_hot_x, &icon_hot_y); if (!iconmask_pixmap) @@ -195,10 +186,10 @@ static DrawWindow X11InitWindow() wm_hints.icon_mask = iconmask_pixmap; wm_hints.flags = StateHint | IconPixmapHint | IconMaskHint | InputHint; - class_hints.res_name = program.command_name; + class_hints.res_name = program.command_basename; class_hints.res_class = program.program_title; - XSetWMProperties(display, window, &windowName, &iconName, + XSetWMProperties(display, new_window->drawable, &windowName, &iconName, NULL, 0, &size_hints, &wm_hints, &class_hints); @@ -211,7 +202,7 @@ static DrawWindow X11InitWindow() ButtonPressMask | ButtonReleaseMask | PointerMotionMask | PointerMotionHintMask | KeyPressMask | KeyReleaseMask; - XSelectInput(display, window, window_event_mask); + XSelectInput(display, new_window->drawable, window_event_mask); #endif /* create GC for drawing with window depth and background color (black) */ @@ -219,9 +210,10 @@ static DrawWindow X11InitWindow() gc_values.foreground = pen_bg; gc_values.background = pen_bg; gc_valuemask = GCGraphicsExposures | GCForeground | GCBackground; - gc = XCreateGC(display, window, gc_valuemask, &gc_values); + new_window->gc = + XCreateGC(display, new_window->drawable, gc_valuemask, &gc_values); - return window; + return new_window; } #endif /* TARGET_X11 */