diff options
author | smatz <smatz@openttd.org> | 2009-11-17 23:12:42 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2009-11-17 23:12:42 +0000 |
commit | 5924863a49e940e4dd5c2b74c60de9edd67a4187 (patch) | |
tree | d1c8a205b7d08236d31b32f660ca3dc4259b9afe /src/crashlog.cpp | |
parent | 4eaa558ca119936483c55daf232ece37496eddb4 (diff) | |
download | openttd-5924863a49e940e4dd5c2b74c60de9edd67a4187.tar.xz |
(svn r18156) -Add: crash screenshot, created from blitter buffer
Diffstat (limited to 'src/crashlog.cpp')
-rw-r--r-- | src/crashlog.cpp | 22 |
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; } |