diff options
| -rw-r--r-- | dist/qt_themes/colorful_dark/icons/index.theme | 2 | ||||
| -rw-r--r-- | dist/qt_themes/colorful_midnight_blue/icons/index.theme | 2 | ||||
| -rw-r--r-- | dist/qt_themes/qdarkstyle_midnight_blue/style.qss | 4 | ||||
| -rw-r--r-- | dist/yuzu.bmp | bin | 0 -> 262282 bytes | |||
| -rw-r--r-- | src/video_core/shader/async_shaders.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 10 | ||||
| -rw-r--r-- | src/yuzu/main.ui | 8 | ||||
| -rw-r--r-- | src/yuzu/yuzu.qrc | 5 | ||||
| -rw-r--r-- | src/yuzu_cmd/CMakeLists.txt | 13 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | 17 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.h | 3 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp | 2 |
14 files changed, 54 insertions, 16 deletions
diff --git a/dist/qt_themes/colorful_dark/icons/index.theme b/dist/qt_themes/colorful_dark/icons/index.theme index 94d5ae8aa..19dc0369a 100644 --- a/dist/qt_themes/colorful_dark/icons/index.theme +++ b/dist/qt_themes/colorful_dark/icons/index.theme | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | [Icon Theme] | 1 | [Icon Theme] |
| 2 | Name=colorful_dark | 2 | Name=colorful_dark |
| 3 | Comment=Colorful theme (Dark style) | 3 | Comment=Colorful theme (Dark style) |
| 4 | Inherits=default | 4 | Inherits=colorful |
| 5 | Directories=16x16 | 5 | Directories=16x16 |
| 6 | 6 | ||
| 7 | [16x16] | 7 | [16x16] |
diff --git a/dist/qt_themes/colorful_midnight_blue/icons/index.theme b/dist/qt_themes/colorful_midnight_blue/icons/index.theme index e23bfe6f9..dcb2c50d6 100644 --- a/dist/qt_themes/colorful_midnight_blue/icons/index.theme +++ b/dist/qt_themes/colorful_midnight_blue/icons/index.theme | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | [Icon Theme] | 1 | [Icon Theme] |
| 2 | Name=colorful_midnight_blue | 2 | Name=colorful_midnight_blue |
| 3 | Comment=Colorful theme (Midnight Blue style) | 3 | Comment=Colorful theme (Midnight Blue style) |
| 4 | Inherits=default | 4 | Inherits=colorful |
| 5 | Directories=16x16 | 5 | Directories=16x16 |
| 6 | 6 | ||
| 7 | [16x16] | 7 | [16x16] |
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss index 70e540b06..a64037455 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss | |||
| @@ -1257,10 +1257,6 @@ QComboBox::item:alternate { | |||
| 1257 | background: #19232D; | 1257 | background: #19232D; |
| 1258 | } | 1258 | } |
| 1259 | 1259 | ||
| 1260 | QComboBox::item:checked { | ||
| 1261 | font-weight: bold; | ||
| 1262 | } | ||
| 1263 | |||
| 1264 | QComboBox::item:selected { | 1260 | QComboBox::item:selected { |
| 1265 | border: 0px solid transparent; | 1261 | border: 0px solid transparent; |
| 1266 | } | 1262 | } |
diff --git a/dist/yuzu.bmp b/dist/yuzu.bmp new file mode 100644 index 000000000..66f2f696f --- /dev/null +++ b/dist/yuzu.bmp | |||
| Binary files differ | |||
diff --git a/src/video_core/shader/async_shaders.cpp b/src/video_core/shader/async_shaders.cpp index 3b40db9bc..02adcf9c7 100644 --- a/src/video_core/shader/async_shaders.cpp +++ b/src/video_core/shader/async_shaders.cpp | |||
| @@ -64,6 +64,7 @@ void AsyncShaders::FreeWorkers() { | |||
| 64 | 64 | ||
| 65 | void AsyncShaders::KillWorkers() { | 65 | void AsyncShaders::KillWorkers() { |
| 66 | is_thread_exiting.store(true); | 66 | is_thread_exiting.store(true); |
| 67 | cv.notify_all(); | ||
| 67 | for (auto& thread : worker_threads) { | 68 | for (auto& thread : worker_threads) { |
| 68 | thread.detach(); | 69 | thread.detach(); |
| 69 | } | 70 | } |
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index fb9967c8f..b025ced1c 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt | |||
| @@ -151,6 +151,7 @@ add_executable(yuzu | |||
| 151 | util/util.h | 151 | util/util.h |
| 152 | compatdb.cpp | 152 | compatdb.cpp |
| 153 | compatdb.h | 153 | compatdb.h |
| 154 | yuzu.qrc | ||
| 154 | yuzu.rc | 155 | yuzu.rc |
| 155 | ) | 156 | ) |
| 156 | 157 | ||
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 28a52a56c..0ba7c07cc 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp | |||
| @@ -2770,7 +2770,7 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) { | |||
| 2770 | .arg(errors)); | 2770 | .arg(errors)); |
| 2771 | } | 2771 | } |
| 2772 | 2772 | ||
| 2773 | QProgressDialog prog; | 2773 | QProgressDialog prog(this); |
| 2774 | prog.setRange(0, 0); | 2774 | prog.setRange(0, 0); |
| 2775 | prog.setLabelText(tr("Deriving keys...\nThis may take up to a minute depending \non your " | 2775 | prog.setLabelText(tr("Deriving keys...\nThis may take up to a minute depending \non your " |
| 2776 | "system's performance.")); | 2776 | "system's performance.")); |
| @@ -2952,7 +2952,7 @@ void GMainWindow::filterBarSetChecked(bool state) { | |||
| 2952 | } | 2952 | } |
| 2953 | 2953 | ||
| 2954 | void GMainWindow::UpdateUITheme() { | 2954 | void GMainWindow::UpdateUITheme() { |
| 2955 | const QString default_icons = QStringLiteral(":/icons/default"); | 2955 | const QString default_icons = QStringLiteral("default"); |
| 2956 | const QString& current_theme = UISettings::values.theme; | 2956 | const QString& current_theme = UISettings::values.theme; |
| 2957 | const bool is_default_theme = current_theme == QString::fromUtf8(UISettings::themes[0].second); | 2957 | const bool is_default_theme = current_theme == QString::fromUtf8(UISettings::themes[0].second); |
| 2958 | QStringList theme_paths(default_theme_paths); | 2958 | QStringList theme_paths(default_theme_paths); |
| @@ -2968,7 +2968,6 @@ void GMainWindow::UpdateUITheme() { | |||
| 2968 | qApp->setStyleSheet({}); | 2968 | qApp->setStyleSheet({}); |
| 2969 | setStyleSheet({}); | 2969 | setStyleSheet({}); |
| 2970 | } | 2970 | } |
| 2971 | theme_paths.append(default_icons); | ||
| 2972 | QIcon::setThemeName(default_icons); | 2971 | QIcon::setThemeName(default_icons); |
| 2973 | } else { | 2972 | } else { |
| 2974 | const QString theme_uri(QLatin1Char{':'} + current_theme + QStringLiteral("/style.qss")); | 2973 | const QString theme_uri(QLatin1Char{':'} + current_theme + QStringLiteral("/style.qss")); |
| @@ -2980,10 +2979,7 @@ void GMainWindow::UpdateUITheme() { | |||
| 2980 | } else { | 2979 | } else { |
| 2981 | LOG_ERROR(Frontend, "Unable to set style, stylesheet file not found"); | 2980 | LOG_ERROR(Frontend, "Unable to set style, stylesheet file not found"); |
| 2982 | } | 2981 | } |
| 2983 | 2982 | QIcon::setThemeName(current_theme); | |
| 2984 | const QString theme_name = QStringLiteral(":/icons/") + current_theme; | ||
| 2985 | theme_paths.append({default_icons, theme_name}); | ||
| 2986 | QIcon::setThemeName(theme_name); | ||
| 2987 | } | 2983 | } |
| 2988 | 2984 | ||
| 2989 | QIcon::setThemeSearchPaths(theme_paths); | 2985 | QIcon::setThemeSearchPaths(theme_paths); |
diff --git a/src/yuzu/main.ui b/src/yuzu/main.ui index e2ad5baf6..048870687 100644 --- a/src/yuzu/main.ui +++ b/src/yuzu/main.ui | |||
| @@ -14,8 +14,8 @@ | |||
| 14 | <string>yuzu</string> | 14 | <string>yuzu</string> |
| 15 | </property> | 15 | </property> |
| 16 | <property name="windowIcon"> | 16 | <property name="windowIcon"> |
| 17 | <iconset> | 17 | <iconset resource="yuzu.qrc"> |
| 18 | <normaloff>../dist/yuzu.ico</normaloff>../dist/yuzu.ico</iconset> | 18 | <normaloff>:/img/yuzu.ico</normaloff>:/img/yuzu.ico</iconset> |
| 19 | </property> | 19 | </property> |
| 20 | <property name="tabShape"> | 20 | <property name="tabShape"> |
| 21 | <enum>QTabWidget::Rounded</enum> | 21 | <enum>QTabWidget::Rounded</enum> |
| @@ -303,6 +303,8 @@ | |||
| 303 | </property> | 303 | </property> |
| 304 | </action> | 304 | </action> |
| 305 | </widget> | 305 | </widget> |
| 306 | <resources/> | 306 | <resources> |
| 307 | <include location="yuzu.qrc"/> | ||
| 308 | </resources> | ||
| 307 | <connections/> | 309 | <connections/> |
| 308 | </ui> | 310 | </ui> |
diff --git a/src/yuzu/yuzu.qrc b/src/yuzu/yuzu.qrc new file mode 100644 index 000000000..5733cac98 --- /dev/null +++ b/src/yuzu/yuzu.qrc | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | <RCC> | ||
| 2 | <qresource prefix="/img"> | ||
| 3 | <file alias="yuzu.ico">../../dist/yuzu.ico</file> | ||
| 4 | </qresource> | ||
| 5 | </RCC> | ||
diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt index 0b3f2cb54..8461f8896 100644 --- a/src/yuzu_cmd/CMakeLists.txt +++ b/src/yuzu_cmd/CMakeLists.txt | |||
| @@ -1,5 +1,15 @@ | |||
| 1 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) | 1 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) |
| 2 | 2 | ||
| 3 | function(create_resource file output filename) | ||
| 4 | # Read hex data from file | ||
| 5 | file(READ ${file} filedata HEX) | ||
| 6 | # Convert hex data for C compatibility | ||
| 7 | string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata}) | ||
| 8 | # Write data to output file | ||
| 9 | set(RESOURCES_DIR "${PROJECT_BINARY_DIR}/dist" PARENT_SCOPE) | ||
| 10 | file(WRITE "${PROJECT_BINARY_DIR}/dist/${output}" "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned ${filename}_size = sizeof(${filename});\n") | ||
| 11 | endfunction() | ||
| 12 | |||
| 3 | add_executable(yuzu-cmd | 13 | add_executable(yuzu-cmd |
| 4 | config.cpp | 14 | config.cpp |
| 5 | config.h | 15 | config.h |
| @@ -24,6 +34,9 @@ if (MSVC) | |||
| 24 | endif() | 34 | endif() |
| 25 | target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) | 35 | target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) |
| 26 | 36 | ||
| 37 | create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon") | ||
| 38 | target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR}) | ||
| 39 | |||
| 27 | target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include) | 40 | target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include) |
| 28 | 41 | ||
| 29 | if(UNIX AND NOT APPLE) | 42 | if(UNIX AND NOT APPLE) |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp index 39841aa28..7e391ab89 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include "input_common/mouse/mouse_input.h" | 12 | #include "input_common/mouse/mouse_input.h" |
| 13 | #include "input_common/sdl/sdl.h" | 13 | #include "input_common/sdl/sdl.h" |
| 14 | #include "yuzu_cmd/emu_window/emu_window_sdl2.h" | 14 | #include "yuzu_cmd/emu_window/emu_window_sdl2.h" |
| 15 | #include "yuzu_cmd/yuzu_icon.h" | ||
| 15 | 16 | ||
| 16 | EmuWindow_SDL2::EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem_) | 17 | EmuWindow_SDL2::EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem_) |
| 17 | : input_subsystem{input_subsystem_} { | 18 | : input_subsystem{input_subsystem_} { |
| @@ -194,6 +195,22 @@ void EmuWindow_SDL2::WaitEvent() { | |||
| 194 | } | 195 | } |
| 195 | } | 196 | } |
| 196 | 197 | ||
| 198 | void EmuWindow_SDL2::SetWindowIcon() { | ||
| 199 | SDL_RWops* const yuzu_icon_stream = SDL_RWFromConstMem((void*)yuzu_icon, yuzu_icon_size); | ||
| 200 | if (yuzu_icon_stream == nullptr) { | ||
| 201 | LOG_WARNING(Frontend, "Failed to create yuzu icon stream."); | ||
| 202 | return; | ||
| 203 | } | ||
| 204 | SDL_Surface* const window_icon = SDL_LoadBMP_RW(yuzu_icon_stream, 1); | ||
| 205 | if (window_icon == nullptr) { | ||
| 206 | LOG_WARNING(Frontend, "Failed to read BMP from stream."); | ||
| 207 | return; | ||
| 208 | } | ||
| 209 | // The icon is attached to the window pointer | ||
| 210 | SDL_SetWindowIcon(render_window, window_icon); | ||
| 211 | SDL_FreeSurface(window_icon); | ||
| 212 | } | ||
| 213 | |||
| 197 | void EmuWindow_SDL2::OnMinimalClientAreaChangeRequest(std::pair<unsigned, unsigned> minimal_size) { | 214 | void EmuWindow_SDL2::OnMinimalClientAreaChangeRequest(std::pair<unsigned, unsigned> minimal_size) { |
| 198 | SDL_SetWindowMinimumSize(render_window, minimal_size.first, minimal_size.second); | 215 | SDL_SetWindowMinimumSize(render_window, minimal_size.first, minimal_size.second); |
| 199 | } | 216 | } |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.h b/src/yuzu_cmd/emu_window/emu_window_sdl2.h index a93141240..51a12a6a9 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.h +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.h | |||
| @@ -32,6 +32,9 @@ public: | |||
| 32 | /// Wait for the next event on the main thread. | 32 | /// Wait for the next event on the main thread. |
| 33 | void WaitEvent(); | 33 | void WaitEvent(); |
| 34 | 34 | ||
| 35 | // Sets the window icon from yuzu.bmp | ||
| 36 | void SetWindowIcon(); | ||
| 37 | |||
| 35 | protected: | 38 | protected: |
| 36 | /// Called by WaitEvent when a key is pressed or released. | 39 | /// Called by WaitEvent when a key is pressed or released. |
| 37 | void OnKeyEvent(int key, u8 state); | 40 | void OnKeyEvent(int key, u8 state); |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp index deddea9ee..a02485c14 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp | |||
| @@ -107,6 +107,8 @@ EmuWindow_SDL2_GL::EmuWindow_SDL2_GL(InputCommon::InputSubsystem* input_subsyste | |||
| 107 | dummy_window = SDL_CreateWindow(NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 0, 0, | 107 | dummy_window = SDL_CreateWindow(NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 0, 0, |
| 108 | SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL); | 108 | SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL); |
| 109 | 109 | ||
| 110 | SetWindowIcon(); | ||
| 111 | |||
| 110 | if (fullscreen) { | 112 | if (fullscreen) { |
| 111 | Fullscreen(); | 113 | Fullscreen(); |
| 112 | } | 114 | } |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp index 3ba657c00..6f9b00461 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp | |||
| @@ -35,6 +35,8 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(InputCommon::InputSubsystem* input_subsyste | |||
| 35 | std::exit(EXIT_FAILURE); | 35 | std::exit(EXIT_FAILURE); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | SetWindowIcon(); | ||
| 39 | |||
| 38 | switch (wm.subsystem) { | 40 | switch (wm.subsystem) { |
| 39 | #ifdef SDL_VIDEO_DRIVER_WINDOWS | 41 | #ifdef SDL_VIDEO_DRIVER_WINDOWS |
| 40 | case SDL_SYSWM_TYPE::SDL_SYSWM_WINDOWS: | 42 | case SDL_SYSWM_TYPE::SDL_SYSWM_WINDOWS: |