summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dist/qt_themes/colorful_dark/icons/index.theme2
-rw-r--r--dist/qt_themes/colorful_midnight_blue/icons/index.theme2
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/style.qss4
-rw-r--r--dist/yuzu.bmpbin0 -> 262282 bytes
-rw-r--r--src/video_core/shader/async_shaders.cpp1
-rw-r--r--src/yuzu/CMakeLists.txt1
-rw-r--r--src/yuzu/main.cpp10
-rw-r--r--src/yuzu/main.ui8
-rw-r--r--src/yuzu/yuzu.qrc5
-rw-r--r--src/yuzu_cmd/CMakeLists.txt13
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2.cpp17
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2.h3
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp2
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp2
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]
2Name=colorful_dark 2Name=colorful_dark
3Comment=Colorful theme (Dark style) 3Comment=Colorful theme (Dark style)
4Inherits=default 4Inherits=colorful
5Directories=16x16 5Directories=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]
2Name=colorful_midnight_blue 2Name=colorful_midnight_blue
3Comment=Colorful theme (Midnight Blue style) 3Comment=Colorful theme (Midnight Blue style)
4Inherits=default 4Inherits=colorful
5Directories=16x16 5Directories=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
1260QComboBox::item:checked {
1261 font-weight: bold;
1262}
1263
1264QComboBox::item:selected { 1260QComboBox::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
65void AsyncShaders::KillWorkers() { 65void 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
2954void GMainWindow::UpdateUITheme() { 2954void 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 @@
1set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) 1set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
2 2
3function(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")
11endfunction()
12
3add_executable(yuzu-cmd 13add_executable(yuzu-cmd
4 config.cpp 14 config.cpp
5 config.h 15 config.h
@@ -24,6 +34,9 @@ if (MSVC)
24endif() 34endif()
25target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) 35target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads)
26 36
37create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon")
38target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR})
39
27target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include) 40target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include)
28 41
29if(UNIX AND NOT APPLE) 42if(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
16EmuWindow_SDL2::EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem_) 17EmuWindow_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
198void 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
197void EmuWindow_SDL2::OnMinimalClientAreaChangeRequest(std::pair<unsigned, unsigned> minimal_size) { 214void 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
35protected: 38protected:
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: