X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Finit.c;h=a77779d9e8f9f99a8a98ef609bc55c9fdc16350e;hb=14089dac2cbe56e563863e1e5adb8847944fd262;hp=123b8205faa9246772965d1ab9516571d118681c;hpb=c9735f4510c07f163fc103d61ba4e0d2010c2032;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 123b8205..a77779d9 100644 --- a/src/init.c +++ b/src/init.c @@ -220,6 +220,8 @@ static void ReinitializeGraphics() new_graphic_info[IMG_MENU_FONT_SMALL].bitmap, new_graphic_info[IMG_MENU_FONT_EM].bitmap); + SetBackgroundBitmap(NULL); + InitGadgets(); InitToons(); } @@ -772,11 +774,18 @@ void InitElementInfo() static void InitGraphicInfo() { + static boolean clipmasks_initialized = FALSE; static int gfx_action[NUM_IMAGE_FILES]; Bitmap *src_bitmap; int src_x, src_y; int first_frame, last_frame; int i; +#if defined(TARGET_X11_NATIVE) + Pixmap src_pixmap; + XGCValues clip_gc_values; + unsigned long clip_gc_valuemask; + GC copy_clipmask_gc = None; +#endif image_files = getCurrentImageList(); @@ -799,6 +808,22 @@ static void InitGraphicInfo() i++; } +#if defined(TARGET_X11_NATIVE) + if (clipmasks_initialized) + { + for (i=0; iclip_mask, + clip_gc_valuemask, &clip_gc_values); + } + + new_graphic_info[i].clip_mask = + XCreatePixmap(display, window->drawable, TILEX, TILEY, 1); + + src_pixmap = src_bitmap->clip_mask; + XCopyArea(display, src_pixmap, new_graphic_info[i].clip_mask, + copy_clipmask_gc, src_x, src_y, TILEX, TILEY, 0, 0); + + clip_gc_values.graphics_exposures = False; + clip_gc_values.clip_mask = new_graphic_info[i].clip_mask; + clip_gc_valuemask = GCGraphicsExposures | GCClipMask; + new_graphic_info[i].clip_gc = + XCreateGC(display, window->drawable, clip_gc_valuemask, &clip_gc_values); +#endif } + +#if defined(TARGET_X11_NATIVE) + if (copy_clipmask_gc) + XFreeGC(display, copy_clipmask_gc); +#endif + + clipmasks_initialized = TRUE; } static void InitSoundInfo()