Merge pull request #4052 from zhaowenlan1779/bg-color-real-fix

video_core: Allow changing background color while emulation is running
This commit is contained in:
James Rowe 2018-08-04 09:27:30 -06:00 committed by GitHub
commit 0233f3286c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 0 deletions

View file

@ -31,6 +31,8 @@ void Apply() {
VideoCore::g_emu_window->UpdateCurrentFramebufferLayout(layout.width, layout.height); VideoCore::g_emu_window->UpdateCurrentFramebufferLayout(layout.width, layout.height);
} }
VideoCore::g_renderer_bg_color_update_requested = true;
if (Core::System::GetInstance().IsPoweredOn()) { if (Core::System::GetInstance().IsPoweredOn()) {
Core::DSP().SetSink(values.sink_id, values.audio_device_id); Core::DSP().SetSink(values.sink_id, values.audio_device_id);
Core::DSP().EnableStretching(values.enable_audio_stretching); Core::DSP().EnableStretching(values.enable_audio_stretching);

View file

@ -384,6 +384,12 @@ void RendererOpenGL::DrawSingleScreenRotated(const ScreenInfo& screen_info, floa
* Draws the emulated screens to the emulator window. * Draws the emulated screens to the emulator window.
*/ */
void RendererOpenGL::DrawScreens() { void RendererOpenGL::DrawScreens() {
if (VideoCore::g_renderer_bg_color_update_requested.exchange(false)) {
// Update background color before drawing
glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue,
0.0f);
}
auto layout = render_window->GetFramebufferLayout(); auto layout = render_window->GetFramebufferLayout();
const auto& top_screen = layout.top_screen; const auto& top_screen = layout.top_screen;
const auto& bottom_screen = layout.bottom_screen; const auto& bottom_screen = layout.bottom_screen;

View file

@ -22,6 +22,7 @@ std::atomic<bool> g_shader_jit_enabled;
std::atomic<bool> g_hw_shader_enabled; std::atomic<bool> g_hw_shader_enabled;
std::atomic<bool> g_hw_shader_accurate_gs; std::atomic<bool> g_hw_shader_accurate_gs;
std::atomic<bool> g_hw_shader_accurate_mul; std::atomic<bool> g_hw_shader_accurate_mul;
std::atomic<bool> g_renderer_bg_color_update_requested;
/// Initialize the video core /// Initialize the video core
bool Init(EmuWindow* emu_window) { bool Init(EmuWindow* emu_window) {

View file

@ -25,6 +25,7 @@ extern std::atomic<bool> g_shader_jit_enabled;
extern std::atomic<bool> g_hw_shader_enabled; extern std::atomic<bool> g_hw_shader_enabled;
extern std::atomic<bool> g_hw_shader_accurate_gs; extern std::atomic<bool> g_hw_shader_accurate_gs;
extern std::atomic<bool> g_hw_shader_accurate_mul; extern std::atomic<bool> g_hw_shader_accurate_mul;
extern std::atomic<bool> g_renderer_bg_color_update_requested;
/// Start the video core /// Start the video core
void Start(); void Start();