X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=0131c133e7543bb252a2fd76963ce794582b4984;hb=07bd1f7e496e8914d56ec4422b33492b8f66b1d0;hp=1fbafd7818052124b5e0b17847bfc5a35f1d6258;hpb=3d52a86d358f5b1a4b36b80df5d659bce1f5a3a6;p=rocksndiamonds.git diff --git a/src/libgame/system.c b/src/libgame/system.c index 1fbafd78..0131c133 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -36,8 +36,6 @@ struct OptionInfo options; struct VideoSystemInfo video; struct AudioSystemInfo audio; struct GfxInfo gfx; -struct FontInfo font; -struct AnimInfo anim; struct ArtworkInfo artwork; struct JoystickInfo joystick; struct SetupInfo setup; @@ -391,7 +389,7 @@ inline static void FreeBitmapPointers(Bitmap *bitmap) bitmap->surface_masked = NULL; #else /* The X11 version seems to have a memory leak here -- although - "XFreePixmap()" is called, the correspondig memory seems not + "XFreePixmap()" is called, the corresponding memory seems not to be freed (according to "ps"). The SDL version apparently does not have this problem. */ @@ -572,7 +570,7 @@ inline void BlitBitmapOnBackground(Bitmap *src_bitmap, Bitmap *dst_bitmap, int width, int height, int dst_x, int dst_y) { - if (DrawingOnBackground(src_x, src_y)) + if (DrawingOnBackground(dst_x, dst_y)) { /* draw background */ BlitBitmap(gfx.background_bitmap, dst_bitmap, dst_x, dst_y, width, height, @@ -878,6 +876,45 @@ Bitmap *ZoomBitmap(Bitmap *src_bitmap, int zoom_width, int zoom_height) return dst_bitmap; } +void CreateBitmapWithSmallBitmaps(Bitmap *src_bitmap) +{ + Bitmap *tmp_bitmap, *tmp_bitmap_2, *tmp_bitmap_8; + int src_width, src_height; + int tmp_width, tmp_height; + + src_width = src_bitmap->width; + src_height = src_bitmap->height; + + tmp_width = src_width; + tmp_height = src_height + src_height / 2; + + tmp_bitmap = CreateBitmap(tmp_width, tmp_height, DEFAULT_DEPTH); + + tmp_bitmap_2 = ZoomBitmap(src_bitmap, src_width / 2, src_height / 2); + tmp_bitmap_8 = ZoomBitmap(src_bitmap, src_width / 8, src_height / 8); + + BlitBitmap(src_bitmap, tmp_bitmap, 0, 0, src_width, src_height, 0, 0); + BlitBitmap(tmp_bitmap_2, tmp_bitmap, 0, 0, src_width / 2, src_height / 2, + 0, src_height); + BlitBitmap(tmp_bitmap_8, tmp_bitmap, 0, 0, src_width / 8, src_height / 8, + 3 * src_width / 4, src_height); + + FreeBitmap(tmp_bitmap_2); + FreeBitmap(tmp_bitmap_8); + +#ifdef TARGET_SDL + src_bitmap->surface = tmp_bitmap->surface; + tmp_bitmap->surface = NULL; +#else + src_bitmap->drawable = tmp_bitmap->drawable; + tmp_bitmap->drawable = None; +#endif + + src_bitmap->height = tmp_bitmap->height; + + FreeBitmap(tmp_bitmap); +} + /* ========================================================================= */ /* audio functions */ @@ -894,7 +931,7 @@ inline void OpenAudio(void) audio.sound_deactivated = FALSE; audio.mixer_pipe[0] = audio.mixer_pipe[1] = 0; - audio.mixer_pid = -1; + audio.mixer_pid = 0; audio.device_name = NULL; audio.device_fd = -1;