summaryrefslogtreecommitdiff
path: root/src/crashlog.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-11-17 23:12:42 +0000
committersmatz <smatz@openttd.org>2009-11-17 23:12:42 +0000
commit5924863a49e940e4dd5c2b74c60de9edd67a4187 (patch)
treed1c8a205b7d08236d31b32f660ca3dc4259b9afe /src/crashlog.cpp
parent4eaa558ca119936483c55daf232ece37496eddb4 (diff)
downloadopenttd-5924863a49e940e4dd5c2b74c60de9edd67a4187.tar.xz
(svn r18156) -Add: crash screenshot, created from blitter buffer
Diffstat (limited to 'src/crashlog.cpp')
-rw-r--r--src/crashlog.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/crashlog.cpp b/src/crashlog.cpp
index 46c98ec88..fd8469f17 100644
--- a/src/crashlog.cpp
+++ b/src/crashlog.cpp
@@ -21,6 +21,8 @@
#include "sound/sound_driver.hpp"
#include "video/video_driver.hpp"
#include "saveload/saveload.h"
+#include "screenshot.h"
+#include "gfx_func.h"
#include <squirrel.h>
#include "ai/ai_info.hpp"
@@ -249,6 +251,17 @@ bool CrashLog::WriteSavegame(char *filename, const char *filename_last) const
}
}
+bool CrashLog::WriteScreenshot(char *filename, const char *filename_last) const
+{
+ /* Don't draw when we have invalid screen size */
+ if (_screen.width < 1 || _screen.height < 1 || _screen.dst_ptr == NULL) return false;
+
+ RequestScreenshot(SC_RAW, "crash");
+ bool res = MakeScreenshot();
+ if (res) strecpy(filename, _full_screenshot_name, filename_last);
+ return res;
+}
+
bool CrashLog::MakeCrashLog() const
{
/* Don't keep looping logging crashes. */
@@ -292,6 +305,15 @@ bool CrashLog::MakeCrashLog() const
printf("Writing crash savegame failed. Please attach the last (auto)save to any bug reports.\n\n");
}
+ printf("Writing crash screenshot...\n");
+ bret = this->WriteScreenshot(filename, lastof(filename));
+ if (bret) {
+ printf("Crash screenshot written to %s. Please add this file to any bug reports.\n\n", filename);
+ } else {
+ ret = false;
+ printf("Writing crash screenshot failed.\n\n");
+ }
+
return ret;
}