diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2024-05-23 21:38:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-23 21:38:30 +0200 |
| commit | f9916100521e314b84d2bf30712c9ac72ce2292d (patch) | |
| tree | cc6468025f30c00a72b9e1b4f879e72bc6617762 /Source/Core/VideoCommon/OnScreenDisplay.cpp | |
| parent | e0e09d1074ee5b067d92cc50c093992fe9dca7a5 (diff) | |
| parent | 1e9e0cd2d7cf1e28fcbc038e3d26a02ece549ec0 (diff) | |
Merge pull request #12778 from LillyJadeKatrin/retroachievements-default-badges-v2
RetroAchievements - Default Badges
Diffstat (limited to 'Source/Core/VideoCommon/OnScreenDisplay.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/OnScreenDisplay.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/Source/Core/VideoCommon/OnScreenDisplay.cpp b/Source/Core/VideoCommon/OnScreenDisplay.cpp index bfa8bc5321..c24fee6538 100644 --- a/Source/Core/VideoCommon/OnScreenDisplay.cpp +++ b/Source/Core/VideoCommon/OnScreenDisplay.cpp @@ -20,6 +20,7 @@ #include "VideoCommon/AbstractGfx.h" #include "VideoCommon/AbstractTexture.h" +#include "VideoCommon/Assets/CustomTextureData.h" #include "VideoCommon/TextureConfig.h" namespace OSD @@ -36,8 +37,9 @@ static std::atomic<int> s_obscured_pixels_top = 0; struct Message { Message() = default; - Message(std::string text_, u32 duration_, u32 color_, std::unique_ptr<Icon> icon_ = nullptr) - : text(std::move(text_)), duration(duration_), color(color_), icon(std::move(icon_)) + Message(std::string text_, u32 duration_, u32 color_, + const VideoCommon::CustomTextureData::ArraySlice::Level* icon_ = nullptr) + : text(std::move(text_)), duration(duration_), color(color_), icon(icon_) { timer.Start(); } @@ -48,7 +50,7 @@ struct Message bool ever_drawn = false; bool should_discard = false; u32 color = 0; - std::unique_ptr<Icon> icon; + const VideoCommon::CustomTextureData::ArraySlice::Level* icon; std::unique_ptr<AbstractTexture> texture; }; static std::multimap<MessageType, Message> s_messages; @@ -95,13 +97,13 @@ static float DrawMessage(int index, Message& msg, const ImVec2& position, int ti msg.texture = g_gfx->CreateTexture(tex_config); if (msg.texture) { - msg.texture->Load(0, width, height, width, msg.icon->rgba_data.data(), + msg.texture->Load(0, width, height, width, msg.icon->data.data(), sizeof(u32) * width * height); } else { // don't try again next time - msg.icon.reset(); + msg.icon = nullptr; } } @@ -127,7 +129,7 @@ static float DrawMessage(int index, Message& msg, const ImVec2& position, int ti } void AddTypedMessage(MessageType type, std::string message, u32 ms, u32 argb, - std::unique_ptr<Icon> icon) + const VideoCommon::CustomTextureData::ArraySlice::Level* icon) { std::lock_guard lock{s_messages_mutex}; @@ -141,7 +143,8 @@ void AddTypedMessage(MessageType type, std::string message, u32 ms, u32 argb, s_messages.emplace(type, Message(std::move(message), ms, argb, std::move(icon))); } -void AddMessage(std::string message, u32 ms, u32 argb, std::unique_ptr<Icon> icon) +void AddMessage(std::string message, u32 ms, u32 argb, + const VideoCommon::CustomTextureData::ArraySlice::Level* icon) { std::lock_guard lock{s_messages_mutex}; s_messages.emplace(MessageType::Typeless, Message(std::move(message), ms, argb, std::move(icon))); |
