changeset 18089:8028cbd35e30 draft

(svn r22910) -Fix [FS#4617]: icon would (almost) never be shown for SDL builds
author rubidium <rubidium@openttd.org>
date Fri, 09 Sep 2011 09:13:18 +0000
parents 7e631faec969
children 791e9ba0a44a
files Makefile.bundle.in Makefile.src.in src/video/sdl_v.cpp
diffstat 3 files changed, 19 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.bundle.in
+++ b/Makefile.bundle.in
@@ -61,6 +61,9 @@
 	$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh                          "$(BUNDLE_DIR)/$(OSXAPP)" "$(REV)"
 	$(Q)cp    "$(ROOT_DIR)/os/macosx/splash.png"                   "$(DATA_DIR)"
 endif
+ifeq ($(OS),UNIX)
+	$(Q)cp "$(ROOT_DIR)/media/openttd.32.bmp" "$(DATA_DIR)/"
+endif
 	$(Q)cp "$(BIN_DIR)/$(TTD)"                "$(TTD_DIR)/"
 	$(Q)cp "$(BIN_DIR)/ai/"compat_*.nut       "$(AI_DIR)/"
 	$(Q)cp "$(BIN_DIR)/data/"*.grf            "$(DATA_DIR)/"
--- a/Makefile.src.in
+++ b/Makefile.src.in
@@ -249,7 +249,10 @@
 	$(Q)$(WINDRES) -o $@ -I `basename $<` $<
 
 $(BIN_DIR)/$(TTD): $(TTD)
-	$(Q)cp $< $@
+	$(Q)cp $(TTD) $(BIN_DIR)/$(TTD)
+ifeq ($(OS), UNIX)
+	$(Q)cp $(MEDIA_DIR)/openttd.32.bmp $(BIN_DIR)/data/
+endif
 
 $(TTD): $(OBJS) $(CONFIG_CACHE_LINKER)
 	$(E) '$(STAGE) Linking $@'
--- a/src/video/sdl_v.cpp
+++ b/src/video/sdl_v.cpp
@@ -22,6 +22,7 @@
 #include "../progress.h"
 #include "../core/random_func.hpp"
 #include "../core/math_func.hpp"
+#include "../fileio_func.h"
 #include "sdl_v.h"
 #include <SDL.h>
 
@@ -203,10 +204,6 @@
 	*h = _resolutions[best].height;
 }
 
-#ifndef ICON_DIR
-#define ICON_DIR "media"
-#endif
-
 #ifdef WIN32
 /* Let's redefine the LoadBMP macro with because we are dynamically
  * loading SDL and need to 'SDL_CALL' all functions */
@@ -226,15 +223,18 @@
 
 	if (bpp == 0) usererror("Can't use a blitter that blits 0 bpp for normal visuals");
 
-	/* Give the application an icon */
-	icon = SDL_CALL SDL_LoadBMP(ICON_DIR PATHSEP "openttd.32.bmp");
-	if (icon != NULL) {
-		/* Get the colourkey, which will be magenta */
-		uint32 rgbmap = SDL_CALL SDL_MapRGB(icon->format, 255, 0, 255);
+	char icon_path[MAX_PATH];
+	if (FioFindFullPath(icon_path, lengthof(icon_path), BASESET_DIR, "openttd.32.bmp") != NULL) {
+		/* Give the application an icon */
+		icon = SDL_CALL SDL_LoadBMP(icon_path);
+		if (icon != NULL) {
+			/* Get the colourkey, which will be magenta */
+			uint32 rgbmap = SDL_CALL SDL_MapRGB(icon->format, 255, 0, 255);
 
-		SDL_CALL SDL_SetColorKey(icon, SDL_SRCCOLORKEY, rgbmap);
-		SDL_CALL SDL_WM_SetIcon(icon, NULL);
-		SDL_CALL SDL_FreeSurface(icon);
+			SDL_CALL SDL_SetColorKey(icon, SDL_SRCCOLORKEY, rgbmap);
+			SDL_CALL SDL_WM_SetIcon(icon, NULL);
+			SDL_CALL SDL_FreeSurface(icon);
+		}
 	}
 
 	/* DO NOT CHANGE TO HWSURFACE, IT DOES NOT WORK */