From 71e457783eb830982aa5f89a3f72ea741f32ffef Mon Sep 17 00:00:00 2001 From: Littleboy Date: Tue, 26 Apr 2011 12:47:03 -0400 Subject: BACKENDS: Add generic TaskbarManager class to handle taskbar integration --- backends/platform/sdl/sdl.cpp | 17 +++++++++++++++++ backends/platform/sdl/sdl.h | 6 ++++-- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'backends/platform') diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index fd27c82797..4520b74861 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -31,6 +31,7 @@ #include "backends/platform/sdl/sdl.h" #include "common/config-manager.h" #include "common/EventRecorder.h" +#include "common/taskbar.h" #include "common/textconsole.h" #include "backends/saves/default/default-saves.h" @@ -125,6 +126,9 @@ void OSystem_SDL::init() { if (_timerManager == 0) _timerManager = new SdlTimerManager(); + if (_taskbarManager == 0) + _taskbarManager = new Common::TaskbarManager(); + #ifdef USE_OPENGL // Setup a list with both SDL and OpenGL graphics modes setupGraphicsModes(); @@ -209,6 +213,19 @@ void OSystem_SDL::initBackend() { ModularBackend::initBackend(); } +void OSystem_SDL::engineInit() { + // Add the started engine to the list of recent tasks + _taskbarManager->addRecent(ConfMan.getActiveDomainName(), ConfMan.get("description")); + + // Set the overlay icon the current running engine + _taskbarManager->setOverlayIcon(ConfMan.getActiveDomainName(), ConfMan.get("description")); +} + +void OSystem_SDL::engineDone() { + // Remove overlay icon + _taskbarManager->setOverlayIcon("", ""); +} + void OSystem_SDL::initSDL() { // Check if SDL has not been initialized if (!_initedSDL) { diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index 9c08752054..19f913ef45 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -30,7 +30,7 @@ #include "backends/events/sdl/sdl-events.h" #include "backends/log/log.h" -/** +/** * Base OSystem class for all SDL ports. */ class OSystem_SDL : public ModularBackend { @@ -38,7 +38,7 @@ public: OSystem_SDL(); virtual ~OSystem_SDL(); - /** + /** * Pre-initialize backend. It should be called after * instantiating the backend. Early needed managers are * created here. @@ -54,6 +54,8 @@ public: // Override functions from ModularBackend and OSystem virtual void initBackend(); + virtual void engineInit(); + virtual void engineDone(); virtual Common::HardwareKeySet *getHardwareKeySet(); virtual void quit(); virtual void fatalError(); -- cgit v1.2.3 From f67975a487704828a2005a26ed6725b01c2554db Mon Sep 17 00:00:00 2001 From: Littleboy Date: Tue, 26 Apr 2011 12:48:01 -0400 Subject: BACKENDS: Add win32 stubs for taskbar integration --- backends/platform/sdl/win32/win32.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'backends/platform') diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp index 5b14be4417..0fd2fbbd1d 100644 --- a/backends/platform/sdl/win32/win32.cpp +++ b/backends/platform/sdl/win32/win32.cpp @@ -36,6 +36,7 @@ #include "backends/platform/sdl/win32/win32.h" #include "backends/fs/windows/windows-fs-factory.h" +#include "backends/taskbar/win32/win32-taskbar.h" #include "common/memstream.h" @@ -81,9 +82,12 @@ void OSystem_Win32::init() { } #endif - // Initialze File System Factory + // Initialize File System Factory _fsFactory = new WindowsFilesystemFactory(); + // Initialize task bar manager + _taskbarManager = new Win32TaskbarManager(); + // Invoke parent implementation of this method OSystem_SDL::init(); } -- cgit v1.2.3 From c0ec09ac66162d253ab16e1fb9b3a85dfdd176d7 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Thu, 31 Mar 2011 04:46:36 -0400 Subject: BACKENDS: Implement Win32 taskbar progress state and recent list --- backends/platform/sdl/win32/win32.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'backends/platform') diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp index 0fd2fbbd1d..bb254786d5 100644 --- a/backends/platform/sdl/win32/win32.cpp +++ b/backends/platform/sdl/win32/win32.cpp @@ -87,6 +87,7 @@ void OSystem_Win32::init() { // Initialize task bar manager _taskbarManager = new Win32TaskbarManager(); + ((Win32TaskbarManager *)_taskbarManager)->init(); // Invoke parent implementation of this method OSystem_SDL::init(); -- cgit v1.2.3 From c3d9c6afa57055705849359deaac7c5748d66fe1 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 1 Apr 2011 01:30:12 -0400 Subject: BACKENDS: Add use flag for taskbar integration --- backends/platform/sdl/win32/win32.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'backends/platform') diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp index bb254786d5..0a6702b6d9 100644 --- a/backends/platform/sdl/win32/win32.cpp +++ b/backends/platform/sdl/win32/win32.cpp @@ -85,9 +85,11 @@ void OSystem_Win32::init() { // Initialize File System Factory _fsFactory = new WindowsFilesystemFactory(); - // Initialize task bar manager +#if defined(USE_TASKBAR) + // Initialize taskbar manager _taskbarManager = new Win32TaskbarManager(); ((Win32TaskbarManager *)_taskbarManager)->init(); +#endif // Invoke parent implementation of this method OSystem_SDL::init(); -- cgit v1.2.3 From 984e1968bce3b4a23833719653a5d5751e5c8a04 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 1 Apr 2011 08:01:53 -0400 Subject: BACKENDS: Add WIP Unity support --- backends/platform/sdl/posix/posix.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'backends/platform') diff --git a/backends/platform/sdl/posix/posix.cpp b/backends/platform/sdl/posix/posix.cpp index d757186134..f124a3af7d 100644 --- a/backends/platform/sdl/posix/posix.cpp +++ b/backends/platform/sdl/posix/posix.cpp @@ -33,6 +33,7 @@ #include "backends/platform/sdl/posix/posix.h" #include "backends/saves/posix/posix-saves.h" #include "backends/fs/posix/posix-fs-factory.h" +#include "backends/taskbar/unity/unity-taskbar.h" #include #include @@ -49,6 +50,11 @@ void OSystem_POSIX::init() { // Initialze File System Factory _fsFactory = new POSIXFilesystemFactory(); +#if defined(USE_TASKBAR) + // Initialize taskbar manager + _taskbarManager = new UnityTaskbarManager(); +#endif + // Invoke parent implementation of this method OSystem_SDL::init(); } -- cgit v1.2.3 From 6c14d8a95052b68c9f076d32e520c6befac3d959 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Mon, 4 Apr 2011 12:35:19 -0400 Subject: BACKENDS: Integrate glib main event loop - Unity needs a glib event loop to dispatch events. - Cleanup whitespace and indentation --- backends/platform/sdl/posix/posix.cpp | 9 +++++++-- backends/platform/sdl/sdl.cpp | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'backends/platform') diff --git a/backends/platform/sdl/posix/posix.cpp b/backends/platform/sdl/posix/posix.cpp index f124a3af7d..94f8d95ffb 100644 --- a/backends/platform/sdl/posix/posix.cpp +++ b/backends/platform/sdl/posix/posix.cpp @@ -51,8 +51,8 @@ void OSystem_POSIX::init() { _fsFactory = new POSIXFilesystemFactory(); #if defined(USE_TASKBAR) - // Initialize taskbar manager - _taskbarManager = new UnityTaskbarManager(); + // Initialize taskbar manager + _taskbarManager = new UnityTaskbarManager(); #endif // Invoke parent implementation of this method @@ -66,6 +66,11 @@ void OSystem_POSIX::initBackend() { // Invoke parent implementation of this method OSystem_SDL::initBackend(); + +#if defined(USE_TASKBAR) + // Register the taskbar manager as an event source (this is necessary for the glib event loop to be run) + _eventManager->getEventDispatcher()->registerSource((UnityTaskbarManager *)_taskbarManager, false); +#endif } bool OSystem_POSIX::hasFeature(Feature f) { diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index 4520b74861..4743dbb558 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -385,7 +385,7 @@ void OSystem_SDL::setupIcon() { if (sscanf(scummvm_icon[0], "%d %d %d %d", &w, &h, &ncols, &nbytes) != 4) { warning("Wrong format of scummvm_icon[0] (%s)", scummvm_icon[0]); - + return; } if ((w > 512) || (h > 512) || (ncols > 255) || (nbytes > 1)) { -- cgit v1.2.3 From 5649ddaf101db5d8ce70e9ba1bfda850c5d00aa5 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Mon, 4 Apr 2011 16:10:58 -0400 Subject: BACKENDS: Move Win32TaskbarManager init code to constructor --- backends/platform/sdl/win32/win32.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'backends/platform') diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp index 0a6702b6d9..08139f0dc2 100644 --- a/backends/platform/sdl/win32/win32.cpp +++ b/backends/platform/sdl/win32/win32.cpp @@ -88,7 +88,6 @@ void OSystem_Win32::init() { #if defined(USE_TASKBAR) // Initialize taskbar manager _taskbarManager = new Win32TaskbarManager(); - ((Win32TaskbarManager *)_taskbarManager)->init(); #endif // Invoke parent implementation of this method -- cgit v1.2.3 From 1e3603b9371204c88a60983cbfb61a4adcef0b94 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Tue, 26 Apr 2011 16:19:20 -0400 Subject: BACKENDS: Add define for Unity-specific taskbar code --- backends/platform/sdl/posix/posix.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'backends/platform') diff --git a/backends/platform/sdl/posix/posix.cpp b/backends/platform/sdl/posix/posix.cpp index 94f8d95ffb..05c779a4e0 100644 --- a/backends/platform/sdl/posix/posix.cpp +++ b/backends/platform/sdl/posix/posix.cpp @@ -50,7 +50,7 @@ void OSystem_POSIX::init() { // Initialze File System Factory _fsFactory = new POSIXFilesystemFactory(); -#if defined(USE_TASKBAR) +#if defined(USE_TASKBAR) && defined(USE_TASKBAR_UNITY) // Initialize taskbar manager _taskbarManager = new UnityTaskbarManager(); #endif @@ -67,7 +67,7 @@ void OSystem_POSIX::initBackend() { // Invoke parent implementation of this method OSystem_SDL::initBackend(); -#if defined(USE_TASKBAR) +#if defined(USE_TASKBAR) && defined(USE_TASKBAR_UNITY) // Register the taskbar manager as an event source (this is necessary for the glib event loop to be run) _eventManager->getEventDispatcher()->registerSource((UnityTaskbarManager *)_taskbarManager, false); #endif -- cgit v1.2.3 From 96148345483dd0e7667f0b7541d5956524181dd5 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 29 Apr 2011 12:15:49 -0400 Subject: BACKENDS/COMMON/GUI: Remove complete support for TaskbarManager when taskbar integration is not enabled --- backends/platform/sdl/sdl.cpp | 4 ++++ backends/platform/sdl/sdl.h | 2 ++ 2 files changed, 6 insertions(+) (limited to 'backends/platform') diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index 4743dbb558..85ea177a39 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -126,8 +126,10 @@ void OSystem_SDL::init() { if (_timerManager == 0) _timerManager = new SdlTimerManager(); +#if defined(USE_TASKBAR) if (_taskbarManager == 0) _taskbarManager = new Common::TaskbarManager(); +#endif #ifdef USE_OPENGL // Setup a list with both SDL and OpenGL graphics modes @@ -213,6 +215,7 @@ void OSystem_SDL::initBackend() { ModularBackend::initBackend(); } +#if defined(USE_TASKBAR) void OSystem_SDL::engineInit() { // Add the started engine to the list of recent tasks _taskbarManager->addRecent(ConfMan.getActiveDomainName(), ConfMan.get("description")); @@ -225,6 +228,7 @@ void OSystem_SDL::engineDone() { // Remove overlay icon _taskbarManager->setOverlayIcon("", ""); } +#endif void OSystem_SDL::initSDL() { // Check if SDL has not been initialized diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index 19f913ef45..395b2b3aac 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -54,8 +54,10 @@ public: // Override functions from ModularBackend and OSystem virtual void initBackend(); +#if defined(USE_TASKBAR) virtual void engineInit(); virtual void engineDone(); +#endif virtual Common::HardwareKeySet *getHardwareKeySet(); virtual void quit(); virtual void fatalError(); -- cgit v1.2.3