+#ifdef USE_SDL_LIBRARY
+ /* create some native image surfaces for double-buffer purposes */
+
+ /* create double-buffer surface for background image */
+ if ((sdl_image_tmp = SDL_CreateRGBSurface(SDL_SWSURFACE,
+ WIN_XSIZE, WIN_YSIZE,
+ WIN_SDL_DEPTH, 0, 0, 0, 0))
+ == NULL)
+ Error(ERR_EXIT, "SDL_CreateRGBSurface() failed: %s\n", SDL_GetError());
+
+ if ((sdl_pix[PIX_DB_BACK] = SDL_DisplayFormat(sdl_image_tmp)) == NULL)
+ Error(ERR_EXIT, "SDL_DisplayFormat() failed: %s\n", SDL_GetError());
+
+ SDL_FreeSurface(sdl_image_tmp);
+
+ /* create double-buffer surface for door image */
+ if ((sdl_image_tmp = SDL_CreateRGBSurface(SDL_SWSURFACE,
+ 3 * DXSIZE, DYSIZE + VYSIZE,
+ WIN_SDL_DEPTH, 0, 0, 0, 0))
+ == NULL)
+ Error(ERR_EXIT, "SDL_CreateRGBSurface() failed: %s\n", SDL_GetError());
+
+ if ((sdl_pix[PIX_DB_DOOR] = SDL_DisplayFormat(sdl_image_tmp)) == NULL)
+ Error(ERR_EXIT, "SDL_DisplayFormat() failed: %s\n", SDL_GetError());
+
+ SDL_FreeSurface(sdl_image_tmp);
+
+ /* create double-buffer surface for field image */
+ if ((sdl_image_tmp = SDL_CreateRGBSurface(SDL_SWSURFACE,
+ FXSIZE, FYSIZE,
+ WIN_SDL_DEPTH, 0, 0, 0, 0))
+ == NULL)
+ Error(ERR_EXIT, "SDL_CreateRGBSurface() failed: %s\n", SDL_GetError());
+
+ if ((sdl_pix[PIX_DB_FIELD] = SDL_DisplayFormat(sdl_image_tmp)) == NULL)
+ Error(ERR_EXIT, "SDL_DisplayFormat() failed: %s\n", SDL_GetError());
+
+ SDL_FreeSurface(sdl_image_tmp);
+
+ /* initialize surface array to 'NULL' */
+ for(i=0; i<NUM_TILES; i++)
+ sdl_tile_masked[i] = NULL;
+
+ /* create only those masked surfaces we really need */
+ for(i=0; tile_needs_clipping[i].start>=0; i++)
+ {
+ for(j=0; j<tile_needs_clipping[i].count; j++)
+ {
+ int tile = tile_needs_clipping[i].start + j;
+#if 0
+ int graphic = tile;
+ int src_x, src_y;
+ int pixmap_nr;
+ Pixmap src_pixmap;
+
+ getGraphicSource(graphic, &pixmap_nr, &src_x, &src_y);
+ src_pixmap = clipmask[pixmap_nr];
+
+ tile_clipmask[tile] = XCreatePixmap(display, window, TILEX,TILEY, 1);
+
+ XCopyArea(display,src_pixmap,tile_clipmask[tile],copy_clipmask_gc,
+ src_x,src_y, TILEX,TILEY, 0,0);
+#endif
+ }
+ }
+
+ sdl_drawto = sdl_backbuffer = sdl_pix[PIX_DB_BACK];
+ sdl_fieldbuffer = sdl_pix[PIX_DB_FIELD];
+ SetDrawtoField(DRAW_BACKBUFFER);
+
+ SDLCopyArea(sdl_pix[PIX_BACK], sdl_backbuffer,
+ 0,0, WIN_XSIZE,WIN_YSIZE, 0,0);
+ SDLFillRectangle(sdl_pix[PIX_DB_BACK],
+ REAL_SX,REAL_SY, FULL_SXSIZE,FULL_SYSIZE, 0x000000);
+ SDLFillRectangle(sdl_pix[PIX_DB_DOOR],
+ 0,0, 3*DXSIZE,DYSIZE+VYSIZE, 0x000000);
+
+#else /* !USE_SDL_LIBRARY */
+