From 39a7096711fa991e78fe297960137941b52120eb Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sat, 13 Apr 2013 00:48:53 -0500 Subject: Extend our OSD class to support callbacks on init, onframe, and shutdown. --- Source/Core/VideoCommon/Src/OnScreenDisplay.cpp | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'Source/Core/VideoCommon/Src/OnScreenDisplay.cpp') diff --git a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp index 10cf5b84af..ffe0766e44 100644 --- a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp +++ b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp @@ -24,6 +24,8 @@ #include "RenderBase.h" #include "Timer.h" +#include + namespace OSD { @@ -39,6 +41,26 @@ struct MESSAGE u32 dwTimeStamp; }; +class CALLBACK +{ +private: + CallbackPtr m_functionptr; + CallbackType m_type; + u32 m_data; +public: + CALLBACK(CallbackType OnType, CallbackPtr FuncPtr, u32 UserData) + { + m_type = OnType; + m_functionptr = FuncPtr; + m_data = UserData; + } + void Call() + { + m_functionptr(m_data); + } + CallbackType Type() { return m_type; } +}; +std::vector m_callbacks; static std::list s_listMsgs; void AddMessage(const char* pstr, u32 ms) @@ -86,4 +108,17 @@ void ClearMessages() it = s_listMsgs.erase(it); } +// On-Screen Display Callbacks +void AddCallback(CallbackType OnType, CallbackPtr FuncPtr, u32 UserData) +{ + m_callbacks.push_back(CALLBACK(OnType, FuncPtr, UserData)); +} + +void DoCallbacks(CallbackType OnType) +{ + for (auto it = m_callbacks.begin(); it != m_callbacks.end(); ++it) + if (it->Type() == OnType) + it->Call(); +} + } // namespace -- cgit v1.2.3 From 48927c17d252223ffdaa5cfb34aa850eb6ee6ee1 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sat, 13 Apr 2013 00:54:11 -0500 Subject: Good job Windows. Stop choosing the same names as I do. --- Source/Core/VideoCommon/Src/OnScreenDisplay.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoCommon/Src/OnScreenDisplay.cpp') diff --git a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp index ffe0766e44..ddd5343bb9 100644 --- a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp +++ b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp @@ -41,14 +41,14 @@ struct MESSAGE u32 dwTimeStamp; }; -class CALLBACK +class OSDCALLBACK { private: CallbackPtr m_functionptr; CallbackType m_type; u32 m_data; public: - CALLBACK(CallbackType OnType, CallbackPtr FuncPtr, u32 UserData) + OSDCALLBACK(CallbackType OnType, CallbackPtr FuncPtr, u32 UserData) { m_type = OnType; m_functionptr = FuncPtr; @@ -60,7 +60,7 @@ public: } CallbackType Type() { return m_type; } }; -std::vector m_callbacks; +std::vector m_callbacks; static std::list s_listMsgs; void AddMessage(const char* pstr, u32 ms) @@ -111,7 +111,7 @@ void ClearMessages() // On-Screen Display Callbacks void AddCallback(CallbackType OnType, CallbackPtr FuncPtr, u32 UserData) { - m_callbacks.push_back(CALLBACK(OnType, FuncPtr, UserData)); + m_callbacks.push_back(OSDCALLBACK(OnType, FuncPtr, UserData)); } void DoCallbacks(CallbackType OnType) -- cgit v1.2.3 From bab9963b00953d60bdd6fabe265d5daa45a27661 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 17 Apr 2013 23:09:55 -0400 Subject: New license header introduced for DiscIO, AudioCommon, InputCommon, VideoCommon, and Common projects. --- Source/Core/VideoCommon/Src/OnScreenDisplay.cpp | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'Source/Core/VideoCommon/Src/OnScreenDisplay.cpp') diff --git a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp index ddd5343bb9..51d0f7c006 100644 --- a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp +++ b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp @@ -1,19 +1,6 @@ -// Copyright (C) 2003 Dolphin Project. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 2.0. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License 2.0 for more details. - -// A copy of the GPL 2.0 should have been included with the program. -// If not, see http://www.gnu.org/licenses/ - -// Official SVN repository and contact information can be found at -// http://code.google.com/p/dolphin-emu/ +// Copyright 2013 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. #include -- cgit v1.2.3 From 8da425b008b46ef90d649e55c6c0d4a0bc2b556b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 24 Apr 2013 09:21:54 -0400 Subject: Formatting cleanup for VideoCommon. Block braces on new lines. Also killed off trailing whitespace and dangling elses. Spaced some things out to make them more readable (only in places where it looked like a bit of a clusterfuck). --- Source/Core/VideoCommon/Src/OnScreenDisplay.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoCommon/Src/OnScreenDisplay.cpp') diff --git a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp index 51d0f7c006..29a3837a9a 100644 --- a/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp +++ b/Source/Core/VideoCommon/Src/OnScreenDisplay.cpp @@ -19,7 +19,8 @@ namespace OSD struct MESSAGE { MESSAGE() {} - MESSAGE(const char* p, u32 dw) { + MESSAGE(const char* p, u32 dw) + { strncpy(str, p, 255); str[255] = '\0'; dwTimeStamp = dw; @@ -45,8 +46,10 @@ public: { m_functionptr(m_data); } + CallbackType Type() { return m_type; } }; + std::vector m_callbacks; static std::list s_listMsgs; @@ -57,7 +60,8 @@ void AddMessage(const char* pstr, u32 ms) void DrawMessages() { - if(!SConfig::GetInstance().m_LocalCoreStartupParameter.bOnScreenDisplayMessages) return; + if(!SConfig::GetInstance().m_LocalCoreStartupParameter.bOnScreenDisplayMessages) + return; if (s_listMsgs.size() > 0) { @@ -71,7 +75,8 @@ void DrawMessages() if (time_left < 1024) { alpha = time_left >> 2; - if (time_left < 0) alpha = 0; + if (time_left < 0) + alpha = 0; } alpha <<= 24; @@ -91,8 +96,11 @@ void DrawMessages() void ClearMessages() { std::list::iterator it = s_listMsgs.begin(); - while (it != s_listMsgs.end()) + + while (it != s_listMsgs.end()) + { it = s_listMsgs.erase(it); + } } // On-Screen Display Callbacks @@ -104,8 +112,10 @@ void AddCallback(CallbackType OnType, CallbackPtr FuncPtr, u32 UserData) void DoCallbacks(CallbackType OnType) { for (auto it = m_callbacks.begin(); it != m_callbacks.end(); ++it) + { if (it->Type() == OnType) it->Call(); + } } } // namespace -- cgit v1.2.3