diff --git a/rpcs3/Emu/RSX/GL/GLOverlays.cpp b/rpcs3/Emu/RSX/GL/GLOverlays.cpp index 172f002a19..22d2f26d66 100644 --- a/rpcs3/Emu/RSX/GL/GLOverlays.cpp +++ b/rpcs3/Emu/RSX/GL/GLOverlays.cpp @@ -433,10 +433,8 @@ namespace gl { return cached->second.get(); } - else - { - return load_simple_image(desc, true, owner_uid); - } + + return load_simple_image(desc, true, owner_uid); } void ui_overlay_renderer::set_primitive_type(rsx::overlays::primitive_type type) diff --git a/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp b/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp index b3ecc6b639..39bdd2d3e1 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp @@ -35,13 +35,13 @@ namespace rsx return; } - auto bytes = f.to_vector(); - data = stbi_load_from_memory(bytes.data(), ::narrow(f.size()), &w, &h, &bpp, STBI_rgb_alpha); + const std::vector bytes = f.to_vector(); + load_data(bytes); } image_info::image_info(const std::vector& bytes) { - data = stbi_load_from_memory(bytes.data(), ::narrow(bytes.size()), &w, &h, &bpp, STBI_rgb_alpha); + load_data(bytes); } image_info::~image_info() @@ -49,6 +49,11 @@ namespace rsx if (data) stbi_image_free(data); } + void image_info::load_data(const std::vector& bytes) + { + data = stbi_load_from_memory(bytes.data(), ::narrow(bytes.size()), &w, &h, &bpp, STBI_rgb_alpha); + } + resource_config::resource_config() { texture_resource_files.emplace_back("fade_top.png"); @@ -650,12 +655,10 @@ namespace rsx m_items.push_back(std::move(item)); return m_items.back().get(); } - else - { - auto result = item.get(); - m_items.insert(m_items.begin() + offset, std::move(item)); - return result; - } + + auto result = item.get(); + m_items.insert(m_items.begin() + offset, std::move(item)); + return result; } compiled_resource& vertical_layout::get_compiled() @@ -670,6 +673,12 @@ namespace rsx for (auto &item : m_items) { + if (!item) + { + rsx_log.error("Found null item in overlay_controls"); + continue; + } + const s32 item_y_limit = s32{item->y} + item->h - scroll_offset_value - y; const s32 item_y_base = s32{item->y} - scroll_offset_value - y; @@ -678,7 +687,8 @@ namespace rsx // Out of bounds continue; } - else if (item_y_limit > h || item_y_base < 0) + + if (item_y_limit > h || item_y_base < 0) { // Partial render areaf clip_rect = static_cast(areai{x, y, (x + w), (y + h)}); @@ -721,12 +731,10 @@ namespace rsx m_items.push_back(std::move(item)); return m_items.back().get(); } - else - { - auto result = item.get(); - m_items.insert(m_items.begin() + offset, std::move(item)); - return result; - } + + auto result = item.get(); + m_items.insert(m_items.begin() + offset, std::move(item)); + return result; } compiled_resource& horizontal_layout::get_compiled() @@ -783,7 +791,6 @@ namespace rsx cmd_img.config.set_image_resource(image_resource_ref); cmd_img.config.color = fore_color; cmd_img.config.external_data_ref = external_ref; - cmd_img.config.blur_strength = blur_strength; // Make padding work for images (treat them as the content instead of the 'background') diff --git a/rpcs3/Emu/RSX/Overlays/overlay_controls.h b/rpcs3/Emu/RSX/Overlays/overlay_controls.h index f348b3d52c..805e72224c 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_controls.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_controls.h @@ -40,6 +40,8 @@ namespace rsx image_info(const char* filename); image_info(const std::vector& bytes); ~image_info(); + + void load_data(const std::vector& bytes); }; struct resource_config @@ -87,8 +89,8 @@ namespace rsx bool clip_region = false; u8 texture_ref = image_resource_id::none; - font *font_ref = nullptr; - void *external_data_ref = nullptr; + font* font_ref = nullptr; + void* external_data_ref = nullptr; u8 blur_strength = 0; @@ -243,7 +245,7 @@ namespace rsx { private: u8 image_resource_ref = image_resource_id::none; - void *external_ref = nullptr; + void* external_ref = nullptr; // Strength of blur effect u8 blur_strength = 0; diff --git a/rpcs3/Emu/RSX/Overlays/overlay_media_list_dialog.cpp b/rpcs3/Emu/RSX/Overlays/overlay_media_list_dialog.cpp index 09424a455f..675f560327 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_media_list_dialog.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_media_list_dialog.cpp @@ -131,17 +131,12 @@ namespace rsx m_dim_background->set_size(1280, 720); m_dim_background->back_color.a = 0.5f; - m_list = std::make_unique(1240, 540); - m_list->set_pos(20, 85); - m_description = std::make_unique