aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/sdl
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/sdl')
-rw-r--r--backends/platform/sdl/events.cpp5
-rw-r--r--backends/platform/sdl/sdl.cpp21
2 files changed, 19 insertions, 7 deletions
diff --git a/backends/platform/sdl/events.cpp b/backends/platform/sdl/events.cpp
index b4fc5e0777..feb2c9a9c5 100644
--- a/backends/platform/sdl/events.cpp
+++ b/backends/platform/sdl/events.cpp
@@ -252,6 +252,11 @@ bool OSystem_SDL::pollEvent(Common::Event &event) {
}
#endif
+ if ((ev.key.keysym.mod & KMOD_CTRL) && ev.key.keysym.sym == 'u') {
+ event.type = Common::EVENT_MUTE;
+ return true;
+ }
+
// Ctrl-Alt-<key> will change the GFX mode
if ((b & (Common::KBD_CTRL|Common::KBD_ALT)) == (Common::KBD_CTRL|Common::KBD_ALT)) {
diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp
index 3f9b81a912..105206ec07 100644
--- a/backends/platform/sdl/sdl.cpp
+++ b/backends/platform/sdl/sdl.cpp
@@ -395,13 +395,20 @@ Common::WriteStream *OSystem_SDL::createConfigWriteStream() {
}
void OSystem_SDL::setWindowCaption(const char *caption) {
- Common::String cap(caption);
+ Common::String cap;
+ byte c;
+
+ // The string caption is supposed to be in LATIN-1 encoding.
+ // SDL expects UTF-8. So we perform the conversion here.
+ while ((c = *(const byte *)caption++)) {
+ if (c < 0x80)
+ cap += c;
+ else {
+ cap += 0xC0 | (c >> 6);
+ cap += 0x80 | (c & 0x3F);
+ }
+ }
- // Filter out any non-ASCII characters, replacing them by question marks.
- // At some point, we may wish to allow LATIN 1 or UTF-8.
- for (uint i = 0; i < cap.size(); ++i)
- if ((byte)cap[i] > 0x7F)
- cap.setChar('?', i);
SDL_WM_SetCaption(cap.c_str(), cap.c_str());
}
@@ -487,7 +494,7 @@ void OSystem_SDL::quit() {
void OSystem_SDL::setupIcon() {
int x, y, w, h, ncols, nbytes, i;
unsigned int rgba[256];
- unsigned int *icon;
+ unsigned int *icon;
sscanf(scummvm_icon[0], "%d %d %d %d", &w, &h, &ncols, &nbytes);
if ((w > 512) || (h > 512) || (ncols > 255) || (nbytes > 1)) {