Skip to content
This repository has been archived by the owner on Jan 17, 2023. It is now read-only.

Commit

Permalink
Merge branch 'citra-emu:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
DarthMDev authored Aug 25, 2022
2 parents 7f9469d + 141471e commit aac140c
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 4 deletions.
4 changes: 4 additions & 0 deletions externals/cmake-modules/FindFFmpeg.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,10 @@ function(find_ffmpeg LIBNAME)
endforeach()
string(TOUPPER ${LIBNAME} LIBNAME_UPPER)
file(STRINGS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version.h" _FFmpeg_VERSION_H_CONTENTS REGEX "#define LIB${LIBNAME_UPPER}_VERSION_(MAJOR|MINOR|MICRO) ")
if (EXISTS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version_major.h")
file(STRINGS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version_major.h" _FFmpeg_MAJOR_VERSION_H_CONTENTS REGEX "#define LIB${LIBNAME_UPPER}_VERSION_MAJOR ")
string(APPEND _FFmpeg_VERSION_H_CONTENTS "\n" ${_FFmpeg_MAJOR_VERSION_H_CONTENTS})
endif()
set(_FFmpeg_VERSION_REGEX "([0-9]+)")
foreach(v MAJOR MINOR MICRO)
if("${_FFmpeg_VERSION_H_CONTENTS}" MATCHES "#define LIB${LIBNAME_UPPER}_VERSION_${v}[\\t ]+${_FFmpeg_VERSION_REGEX}")
Expand Down
16 changes: 15 additions & 1 deletion src/citra/citra.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,9 @@ int main(int argc, char** argv) {
return -1;
case Core::System::ResultStatus::Success:
break; // Expected case
default:
LOG_ERROR(Frontend, "Error while loading ROM: {}", system.GetStatusDetails());
break;
}

system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "SDL");
Expand Down Expand Up @@ -437,7 +440,18 @@ int main(int argc, char** argv) {
});

while (emu_window->IsOpen()) {
system.RunLoop();
const auto result = system.RunLoop();

switch (result) {
case Core::System::ResultStatus::ShutdownRequested:
emu_window->RequestClose();
break;
case Core::System::ResultStatus::Success:
break;
default:
LOG_ERROR(Frontend, "Error in main run loop: {}", result, system.GetStatusDetails());
break;
}
}
render_thread.join();

Expand Down
10 changes: 7 additions & 3 deletions src/citra/emu_window/emu_window_sdl2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,10 @@ bool EmuWindow_SDL2::IsOpen() const {
return is_open;
}

void EmuWindow_SDL2::RequestClose() {
is_open = false;
}

void EmuWindow_SDL2::OnResize() {
int width, height;
SDL_GetWindowSize(render_window, &width, &height);
Expand Down Expand Up @@ -134,7 +138,7 @@ void EmuWindow_SDL2::Fullscreen() {
EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) {
// Initialize the window
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER) < 0) {
LOG_CRITICAL(Frontend, "Failed to initialize SDL2! Exiting...");
LOG_CRITICAL(Frontend, "Failed to initialize SDL2: {}! Exiting...", SDL_GetError());
exit(1);
}

Expand Down Expand Up @@ -256,7 +260,7 @@ void EmuWindow_SDL2::PollEvents() {
OnResize();
break;
case SDL_WINDOWEVENT_CLOSE:
is_open = false;
RequestClose();
break;
}
break;
Expand Down Expand Up @@ -287,7 +291,7 @@ void EmuWindow_SDL2::PollEvents() {
OnFingerUp();
break;
case SDL_QUIT:
is_open = false;
RequestClose();
break;
default:
break;
Expand Down
3 changes: 3 additions & 0 deletions src/citra/emu_window/emu_window_sdl2.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ class EmuWindow_SDL2 : public Frontend::EmuWindow {
/// Whether the window is still open, and a close request hasn't yet been sent
bool IsOpen() const;

/// Close the window.
void RequestClose();

/// Creates a new context that is shared with the current context
std::unique_ptr<GraphicsContext> CreateSharedContext() const override;

Expand Down

0 comments on commit aac140c

Please sign in to comment.