diff --git a/README.md b/README.md
index 8f4e6d47e..96e64acfb 100755
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
yuzu emulator early access
=============
-This is the source code for early-access 1588.
+This is the source code for early-access 1591.
## Legal Notice
diff --git a/dist/qt_themes/default/style.qss b/dist/qt_themes/default/style.qss
index 3bc92b69d..836dd25ca 100755
--- a/dist/qt_themes/default/style.qss
+++ b/dist/qt_themes/default/style.qss
@@ -281,380 +281,3 @@ QWidget#controllerPlayer7,
QWidget#controllerPlayer8 {
background: transparent;
}
-
-QDialog#QtSoftwareKeyboardDialog,
-QStackedWidget#topOSK {
- background: rgba(51, 51, 51, .9);
-}
-
-
-QDialog#OverlayDialog,
-QStackedWidget#stackedDialog {
- background: rgba(51, 51, 51, .7);
-}
-
-QWidget#boxOSK,
-QWidget#lineOSK,
-QWidget#richDialog,
-QWidget#lineDialog {
- background: transparent;
-}
-
-QStackedWidget#bottomOSK,
-QWidget#contentDialog,
-QWidget#contentRichDialog {
- background: rgba(240, 240, 240, 1);
-}
-
-QWidget#contentDialog,
-QWidget#contentRichDialog {
- margin: 5px;
- border-radius: 6px;
-}
-
-QWidget#buttonsDialog,
-QWidget#buttonsRichDialog {
- margin: 5px;
- border-top: 2px solid rgba(44, 44, 44, 1);
-}
-
-QWidget#legendOSKnum {
- border-top: 1px solid rgba(44, 44, 44, 1);
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical {
- background: #cdcdcd;
- width: 15px;
- margin: 15px 3px 15px 3px;
- border: 1px transparent;
- border-radius: 4px;
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal {
- background: #cdcdcd;
- height: 15px;
- margin: 3px 15px 3px 15px;
- border: 1px transparent;
- border-radius: 4px;
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::handle {
- background: #fff;
- border-radius: 4px;
- min-height: 5px;
- min-width: 5px;
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-line,
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-line,
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-page,
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-page {
- background: none;
-}
-
-QWidget#inputOSK {
- border-bottom: 3px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#inputOSK QLineEdit {
- background: transparent;
- border: none;
- color: #ccc;
-}
-
-QWidget#inputBoxOSK {
- border: 2px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#inputBoxOSK QTextEdit {
- background: transparent;
- border: none;
- color: #ccc;
-}
-
-QWidget#richDialog QTextBrowser {
- background: transparent;
- border: none;
- padding: 35px 65px;
-}
-
-
-QWidget#lineOSK QLabel#label_header {
- color: #f0f0f0;
-}
-
-QWidget#lineOSK QLabel#label_sub,
-QWidget#lineOSK QLabel#label_characters,
-QWidget#boxOSK QLabel#label_characters_box {
- color: #ccc;
-}
-
-QWidget#contentDialog QLabel#label_title,
-QWidget#contentRichDialog QLabel#label_title_rich {
- color: #888;
-}
-
-QWidget#contentDialog QLabel#label_dialog {
- padding: 20px 65px;
-}
-
-QWidget#contentDialog QLabel#label_title,
-QWidget#contentRichDialog QLabel#label_title_rich {
- padding: 0px 65px;
-}
-
-QDialog#OverlayDialog QPushButton {
- color: rgba(49, 79, 239, 1);
- background: transparent;
- border: none;
- padding: 0px;
- min-width: 0px;
-}
-
-QDialog#OverlayDialog QPushButton:focus,
-QDialog#OverlayDialog QPushButton:hover {
- color: rgba(49, 79, 239, 1);
- background: rgba(255, 255, 255, 1);
- border: 5px solid rgba(148, 250, 202, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#OverlayDialog QPushButton:pressed {
- color: rgba(240, 240, 240, 1);
- background: rgba(150, 150, 150, 1);
- border: 5px solid rgba(148, 250, 202, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton {
- background: rgba(232, 232, 232, 1);
- border: 2px solid rgba(240, 240, 240, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
- background: rgba(218, 218, 218, 1);
- border: 2px solid rgba(240, 240, 240, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
- color: rgba(240, 240, 240, 1);
- background: rgba(44, 44, 44, 1);
- border: 2px solid rgba(240, 240, 240, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
- color: rgba(240, 240, 240, 1);
- background: rgba(49, 79, 239, 1);
- border: 2px solid rgba(240, 240, 240, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus,
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover {
- color: rgba(0, 0, 0, 1);
- background: rgba(255, 255, 255, 1);
- border: 5px solid rgba(148, 250, 202, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed {
- color: rgba(240, 240, 240, 1);
- background: rgba(150, 150, 150, 1);
- border: 5px solid rgba(148, 250, 202, 1);
- border-radius: 6px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_B.png);
- qproperty-icon: url(:/overlay/osk_button_backspace.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_Y.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_plus.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift {
- background-position: left top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_shift_lock_off.png);
- qproperty-icon: url(:/overlay/osk_button_shift.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift {
- background-position: left top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_shift_lock_off.png);
- qproperty-icon: url(:/overlay/osk_button_shift_on.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_parenthesis {
- padding-bottom: 7px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel {
- background: transparent;
- color: #ccc;
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num {
- image: url(:/overlay/button_L.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num {
- image: url(:/overlay/arrow_left.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num {
- image: url(:/overlay/button_R.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num {
- image: url(:/overlay/arrow_right.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift {
- image: url(:/overlay/button_press_stick.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num {
- image: url(:/overlay/button_X.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num {
- image: url(:/overlay/button_A.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
- color: rgba(164, 164, 164, 1);
- background-color: rgba(218, 218, 218, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_slash:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_percent:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_1:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_2:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_3:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_4:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_5:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_6:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_7:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled {
- color: rgba(164, 164, 164, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled {
- background-image: url(:/overlay/osk_button_plus_disabled.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
- background-image: url(:/overlay/osk_button_B_disabled.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled {
- background-image: url(:/overlay/osk_button_Y_disabled.png);
-}
diff --git a/dist/qt_themes/qdarkstyle/style.qss b/dist/qt_themes/qdarkstyle/style.qss
index 8ce6d75f7..2a1e8ddeb 100755
--- a/dist/qt_themes/qdarkstyle/style.qss
+++ b/dist/qt_themes/qdarkstyle/style.qss
@@ -1560,400 +1560,7 @@ QWidget#controllerPlayer8 {
background: transparent;
}
-QDialog#QtSoftwareKeyboardDialog,
-QStackedWidget#topOSK {
- background: rgba(41, 41, 41, .9);
-}
-
-
-QDialog#OverlayDialog,
-QStackedWidget#stackedDialog {
- background: rgba(41, 41, 41, .7);
-}
-
-QWidget#boxOSK,
-QWidget#lineOSK,
-QWidget#richDialog,
-QWidget#lineDialog {
- background: transparent;
-}
-
-QStackedWidget#bottomOSK,
-QWidget#contentDialog,
-QWidget#contentRichDialog {
- background: rgba(71, 69, 71, 1);
-}
-
-QWidget#contentDialog,
-QWidget#contentRichDialog {
- margin: 5px;
- border-radius: 6px;
-}
-
-QWidget#buttonsDialog,
-QWidget#buttonsRichDialog {
- margin: 5px;
- border-top: 2px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#legendOSKnum {
- border-top: 1px solid rgba(255, 255, 255, 1);
-}
-
-QStackedWidget#stackedDialog QTextBrowser QWidget {
- background: transparent;
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar {
- background: #2a2929;
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-line,
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-line {
- border-image: none;
-}
-
-QWidget#inputOSK {
- border-bottom: 3px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#inputOSK QLineEdit {
- background: transparent;
- border: none;
- color: #ccc;
- padding: 0px;
-}
-
-QWidget#inputBoxOSK {
- border: 2px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#inputBoxOSK QTextEdit {
- background: transparent;
- border: none;
- color: #ccc;
-}
-
-QWidget#richDialog QTextBrowser {
- background: transparent;
- border: none;
- color: #fff;
- padding: 35px 65px;
-}
-
-QWidget#lineOSK QLabel#label_header {
- color: #f0f0f0;
-}
-
-QWidget#lineOSK QLabel#label_sub,
-QWidget#lineOSK QLabel#label_characters,
-QWidget#contentDialog QLabel#label_title,
-QWidget#contentRichDialog QLabel#label_title_rich,
-QWidget#boxOSK QLabel#label_characters_box {
- color: #ccc;
-}
-
-QWidget#buttonsDialog,
-QWidget#buttonsRichDialog,
-QWidget#mainOSK,
-QWidget#headerOSK,
-QWidget#normalOSK,
-QWidget#shiftOSK,
-QWidget#numOSK,
-QWidget#subOSK,
-QWidget#inputOSK,
-QWidget#inputBoxOSK,
-QWidget#charactersOSK,
-QWidget#charactersBoxOSK,
-QWidget#legendOSK,
-QWidget#legendOSK QWidget,
-QWidget#legendOSKshift,
-QWidget#legendOSKshift QWidget,
-QWidget#legendOSKnum,
-QWidget#legendOSKnum QWidget {
- background: transparent;
-}
-
-QWidget#contentDialog QLabel,
-QWidget#legendOSK QLabel,
-QWidget#legendOSKshift QLabel,
-QWidget#legendOSKnum QLabel {
- color: rgba(255, 255, 255, 1);
-}
-
-QWidget#contentDialog QLabel#label_dialog {
- padding: 20px 65px;
-}
-
-QWidget#contentDialog QLabel#label_title,
-QWidget#contentRichDialog QLabel#label_title_rich {
- padding: 0px 65px;
-}
-
-QDialog#OverlayDialog QPushButton {
- color: rgba(1, 253, 201, 1);
- background: transparent;
- border: none;
- padding: 0px;
- min-width: 0px;
-}
-
-QDialog#OverlayDialog QPushButton:focus,
-QDialog#OverlayDialog QPushButton:hover {
- color: rgba(1, 253, 201, 1);
- background: rgba(58, 61, 66, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#OverlayDialog QPushButton:pressed {
- color: rgba(240, 240, 240, 1);
- background: rgba(150, 150, 150, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton {
- color: rgba(255, 255, 255, 1);
- background: rgba(80, 79, 80, 1);
- border: 2px solid rgba(71, 69, 71, 1);
- padding: 0px;
- min-width: 0px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
- background: rgba(95, 94, 95, 1);
- border: 2px solid rgba(71, 69, 71, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
- color: rgba(240, 240, 240, 1);
- background: rgba(255, 255, 255, 1);
- border: 2px solid rgba(71, 69, 71, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
- color: rgba(0, 0, 0, 1);
- background: rgba(1, 253, 201, 1);
- border: 2px solid rgba(71, 69, 71, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus,
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover {
- color: rgba(255, 255, 255, 1);
- background: rgba(58, 61, 66, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed {
- color: rgba(240, 240, 240, 1);
- background: rgba(150, 150, 150, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_B_dark.png);
- qproperty-icon: url(:/overlay/osk_button_backspace_dark.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_Y_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
- color: rgba(44, 44, 44, 1);
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_plus_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift {
- background-position: left top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_shift_lock_off.png);
- qproperty-icon: url(:/overlay/osk_button_shift_dark.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift {
- background-position: left top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_shift_lock_off.png);
- qproperty-icon: url(:/overlay/osk_button_shift_on_dark.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_parenthesis {
- padding-bottom: 7px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel {
- background: transparent;
- color: #ccc;
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num {
- image: url(:/overlay/button_L_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num {
- image: url(:/overlay/arrow_left_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num {
- image: url(:/overlay/button_R_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num {
- image: url(:/overlay/arrow_right_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift {
- image: url(:/overlay/button_press_stick_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num {
- image: url(:/overlay/button_X_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num {
- image: url(:/overlay/button_A_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
- color: rgba(144, 144, 144, 1);
- background-color: rgba(95, 94, 95, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_slash:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_percent:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_1:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_2:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_3:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_4:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_5:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_6:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_7:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled {
- color: rgba(144, 144, 144, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled {
- background-image: url(:/overlay/osk_button_plus_dark_disabled.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
- background-image: url(:/overlay/osk_button_B_dark_disabled.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled {
- background-image: url(:/overlay/osk_button_Y_dark_disabled.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QFrame,
-QDialog#QtSoftwareKeyboardDialog QFrame[frameShape="0"],
-QDialog#OverlayDialog QFrame,
-QDialog#OverlayDialog QFrame[frameShape="0"] {
- border-radius: 0px;
- border: none;
+/* touchscreen mapping widget */
+TouchScreenPreview {
+ qproperty-dotHighlightColor: #3daee9;
}
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss
index 64e1ecbcc..a64037455 100755
--- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss
+++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss
@@ -1,10 +1,10 @@
/* ---------------------------------------------------------------------------
- Created by the qtsass compiler v0.1.1
+ Created by the qtsass compiler v0.1.1
- The definitions are in the "qdarkstyle.qss._styles.scss" module
+ The definitions are in the "qdarkstyle.qss._styles.scss" module
- WARNING! All changes made in this file will be lost!
+ WARNING! All changes made in this file will be lost!
--------------------------------------------------------------------------- */
/* QDarkStyleSheet -----------------------------------------------------------
@@ -15,34 +15,34 @@ It is based on three selecting colors, three greyish (background) colors
plus three whitish (foreground) colors. Each set of widgets of the same
type have a header like this:
- ------------------
- GroupName --------
- ------------------
+ ------------------
+ GroupName --------
+ ------------------
And each widget is separated with a header like this:
- QWidgetName ------
+ QWidgetName ------
This makes more easy to find and change some css field. The basic
configuration is described bellow.
- BACKGROUND -----------
+ BACKGROUND -----------
- Light (unpressed)
- Normal (border, disabled, pressed, checked, toolbars, menus)
- Dark (background)
+ Light (unpressed)
+ Normal (border, disabled, pressed, checked, toolbars, menus)
+ Dark (background)
- FOREGROUND -----------
+ FOREGROUND -----------
- Light (texts/labels)
- Normal (not used yet)
- Dark (disabled texts)
+ Light (texts/labels)
+ Normal (not used yet)
+ Dark (disabled texts)
- SELECTION ------------
+ SELECTION ------------
- Light (selection/hover/active)
- Normal (selected)
- Dark (selected disabled)
+ Light (selection/hover/active)
+ Normal (selected)
+ Dark (selected disabled)
If a stranger configuration is required because of a bugfix or anything
else, keep the comment on the line above so nobody changes it, including the
@@ -2483,404 +2483,3 @@ QWidget#controllerPlayer7,
QWidget#controllerPlayer8 {
background: transparent;
}
-
-QDialog#QtSoftwareKeyboardDialog,
-QStackedWidget#topOSK {
- background: rgba(15, 25, 34, .9);
-}
-
-QDialog#OverlayDialog,
-QStackedWidget#stackedDialog {
- background: rgba(15, 25, 34, .7);
-}
-
-QWidget#boxOSK,
-QWidget#lineOSK,
-QWidget#richDialog,
-QWidget#lineDialog {
- background: transparent;
-}
-
-QStackedWidget#bottomOSK,
-QWidget#contentDialog,
-QWidget#contentRichDialog {
- background: rgba(31, 41, 51, 1);
-}
-
-QWidget#contentDialog,
-QWidget#contentRichDialog {
- margin: 5px;
- border-radius: 6px;
-}
-
-QWidget#buttonsDialog,
-QWidget#buttonsRichDialog {
- margin: 5px;
- border-top: 2px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#legendOSKnum {
- border-top: 1px solid rgba(255, 255, 255, 1);
-}
-
-QStackedWidget#stackedDialog QTextBrowser QWidget {
- background: transparent;
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar {
- background: #19232d;
- border: none;
-}
-
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-line,
-QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-line {
- border-image: none;
-}
-
-QWidget#mainOSK QStackedWidget,
-QDialog#OverlayDialog QStackedWidget {
- border: none;
- padding: 0px;
-}
-
-QWidget#inputOSK {
- border-bottom: 3px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#inputOSK QLineEdit {
- background: transparent;
- border: none;
- color: #ccc;
- padding: 0px;
-}
-
-QWidget#inputBoxOSK {
- border: 2px solid rgba(255, 255, 255, .9);
-}
-
-QWidget#inputBoxOSK QTextEdit {
- background: transparent;
- border: none;
- color: #ccc;
-}
-
-QWidget#richDialog QTextBrowser {
- background: transparent;
- border: none;
- color: #fff;
- padding: 35px 65px;
-}
-
-QWidget#lineOSK QLabel#label_header {
- color: #f0f0f0;
-}
-
-QWidget#lineOSK QLabel#label_sub,
-QWidget#lineOSK QLabel#label_characters,
-QWidget#contentDialog QLabel#label_title,
-QWidget#contentRichDialog QLabel#label_title_rich,
-QWidget#boxOSK QLabel#label_characters_box {
- color: #ccc;
-}
-
-QWidget#buttonsDialog,
-QWidget#buttonsRichDialog,
-QWidget#mainOSK,
-QWidget#headerOSK,
-QWidget#normalOSK,
-QWidget#shiftOSK,
-QWidget#numOSK,
-QWidget#subOSK,
-QWidget#inputOSK,
-QWidget#inputBoxOSK,
-QWidget#charactersOSK,
-QWidget#charactersBoxOSK,
-QWidget#legendOSK,
-QWidget#legendOSK QWidget,
-QWidget#legendOSKshift,
-QWidget#legendOSKshift QWidget,
-QWidget#legendOSKnum,
-QWidget#legendOSKnum QWidget {
- background: transparent;
-}
-
-QWidget#contentDialog QLabel,
-QWidget#legendOSK QLabel,
-QWidget#legendOSKshift QLabel,
-QWidget#legendOSKnum QLabel {
- color: rgba(255, 255, 255, 1);
-}
-
-QWidget#contentDialog QLabel#label_dialog {
- padding: 20px 65px;
-}
-
-QWidget#contentDialog QLabel#label_title,
-QWidget#contentRichDialog QLabel#label_title_rich {
- padding: 0px 65px;
-}
-
-QDialog#OverlayDialog QPushButton {
- color: rgba(1, 253, 201, 1);
- background: transparent;
- border: none;
- padding: 0px;
- min-width: 0px;
-}
-
-QDialog#OverlayDialog QPushButton:focus,
-QDialog#OverlayDialog QPushButton:hover {
- color: rgba(1, 253, 201, 1);
- background: rgba(18, 33, 46, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#OverlayDialog QPushButton:pressed {
- color: rgba(240, 240, 240, 1);
- background: rgba(110, 122, 130, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#QtSoftwareKeyboardDialog QLabel {
- padding: 0px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton {
- color: rgba(255, 255, 255, 1);
- background: rgba(40, 51, 60, 1);
- border: 2px solid rgba(31, 41, 51, 1);
- border-radius: 0px;
- padding: 0px;
- min-width: 0px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
- background: rgba(55, 66, 75, 1);
- border: 2px solid rgba(31, 41, 51, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
- color: rgba(240, 240, 240, 1);
- background: rgba(255, 255, 255, 1);
- border: 2px solid rgba(31, 41, 51, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
- color: rgba(0, 0, 0, 1);
- background: rgba(1, 253, 201, 1);
- border: 2px solid rgba(31, 41, 51, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus,
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover {
- color: rgba(255, 255, 255, 1);
- background: rgba(18, 33, 46, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
- outline: none;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed {
- color: rgba(240, 240, 240, 1);
- background: rgba(110, 122, 130, 1);
- border: 5px solid rgba(56, 189, 225, 1);
- border-radius: 6px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_B_dark.png);
- qproperty-icon: url(:/overlay/osk_button_backspace_dark.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_Y_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
- color: rgba(44, 44, 44, 1);
- background-position: right top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_plus_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift {
- background-position: left top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_shift_lock_off.png);
- qproperty-icon: url(:/overlay/osk_button_shift_dark.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift {
- background-position: left top;
- background-repeat: no-repeat;
- background-origin: content;
- background-image: url(:/overlay/osk_button_shift_lock_off.png);
- qproperty-icon: url(:/overlay/osk_button_shift_on_dark.png);
- qproperty-iconSize: 36px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_parenthesis {
- padding-bottom: 7px;
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel {
- background: transparent;
- color: #ccc;
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num {
- image: url(:/overlay/button_L_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num {
- image: url(:/overlay/arrow_left_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num {
- image: url(:/overlay/button_R_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num {
- image: url(:/overlay/arrow_right_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift {
- image: url(:/overlay/button_press_stick_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num {
- image: url(:/overlay/button_X_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift,
-QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num {
- image: url(:/overlay/button_A_dark.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
- color: rgba(144, 144, 144, 1);
- background-color: rgba(55, 66, 75, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_slash:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_percent:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_1:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_2:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_3:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_4:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_5:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_6:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_7:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled {
- color: rgba(144, 144, 144, 1);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled {
- background-image: url(:/overlay/osk_button_plus_dark_disabled.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
- background-image: url(:/overlay/osk_button_B_dark_disabled.png);
-}
-
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
-QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled {
- background-image: url(:/overlay/osk_button_Y_dark_disabled.png);
-}
diff --git a/dist/yuzu.ico b/dist/yuzu.ico
index 7c998a5c5..df3be8464 100755
Binary files a/dist/yuzu.ico and b/dist/yuzu.ico differ
diff --git a/dist/yuzu.svg b/dist/yuzu.svg
index 98ded2d8f..93171d1bf 100755
--- a/dist/yuzu.svg
+++ b/dist/yuzu.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/common/assert.cpp b/src/common/assert.cpp
index c3b70797d..d7d91b96b 100755
--- a/src/common/assert.cpp
+++ b/src/common/assert.cpp
@@ -4,4 +4,8 @@
#include "common/assert.h"
-void assert_handle_failure() {}
+#include "common/common_funcs.h"
+
+void assert_handle_failure() {
+ Crash();
+}
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 7d9eba928..167ee13f3 100755
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -273,7 +273,6 @@ add_library(core STATIC
hle/service/am/applets/profile_select.h
hle/service/am/applets/software_keyboard.cpp
hle/service/am/applets/software_keyboard.h
- hle/service/am/applets/software_keyboard_types.h
hle/service/am/applets/web_browser.cpp
hle/service/am/applets/web_browser.h
hle/service/am/applets/web_types.h
diff --git a/src/core/frontend/applets/software_keyboard.cpp b/src/core/frontend/applets/software_keyboard.cpp
index 12c76c9ee..856ed33da 100755
--- a/src/core/frontend/applets/software_keyboard.cpp
+++ b/src/core/frontend/applets/software_keyboard.cpp
@@ -1,149 +1,29 @@
-// Copyright 2021 yuzu Emulator Project
+// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
-#include
-
-#include "common/logging/log.h"
+#include "common/logging/backend.h"
#include "common/string_util.h"
#include "core/frontend/applets/software_keyboard.h"
namespace Core::Frontend {
-
SoftwareKeyboardApplet::~SoftwareKeyboardApplet() = default;
-DefaultSoftwareKeyboardApplet::~DefaultSoftwareKeyboardApplet() = default;
+void DefaultSoftwareKeyboardApplet::RequestText(
+ std::function)> out,
+ SoftwareKeyboardParameters parameters) const {
+ if (parameters.initial_text.empty())
+ out(u"yuzu");
-void DefaultSoftwareKeyboardApplet::InitializeKeyboard(
- bool is_inline, KeyboardInitializeParameters initialize_parameters,
- std::function submit_normal_callback_,
- std::function
- submit_inline_callback_) {
- if (is_inline) {
- LOG_WARNING(
- Service_AM,
- "(STUBBED) called, backend requested to initialize the inline software keyboard.");
-
- submit_inline_callback = std::move(submit_inline_callback_);
- } else {
- LOG_WARNING(
- Service_AM,
- "(STUBBED) called, backend requested to initialize the normal software keyboard.");
-
- submit_normal_callback = std::move(submit_normal_callback_);
- }
-
- parameters = std::move(initialize_parameters);
-
- LOG_INFO(Service_AM,
- "\nKeyboardInitializeParameters:"
- "\nok_text={}"
- "\nheader_text={}"
- "\nsub_text={}"
- "\nguide_text={}"
- "\ninitial_text={}"
- "\nmax_text_length={}"
- "\nmin_text_length={}"
- "\ninitial_cursor_position={}"
- "\ntype={}"
- "\npassword_mode={}"
- "\ntext_draw_type={}"
- "\nkey_disable_flags={}"
- "\nuse_blur_background={}"
- "\nenable_backspace_button={}"
- "\nenable_return_button={}"
- "\ndisable_cancel_button={}",
- Common::UTF16ToUTF8(parameters.ok_text), Common::UTF16ToUTF8(parameters.header_text),
- Common::UTF16ToUTF8(parameters.sub_text), Common::UTF16ToUTF8(parameters.guide_text),
- Common::UTF16ToUTF8(parameters.initial_text), parameters.max_text_length,
- parameters.min_text_length, parameters.initial_cursor_position, parameters.type,
- parameters.password_mode, parameters.text_draw_type, parameters.key_disable_flags.raw,
- parameters.use_blur_background, parameters.enable_backspace_button,
- parameters.enable_return_button, parameters.disable_cancel_button);
+ out(parameters.initial_text);
}
-void DefaultSoftwareKeyboardApplet::ShowNormalKeyboard() const {
+void DefaultSoftwareKeyboardApplet::SendTextCheckDialog(
+ std::u16string error_message, std::function finished_check) const {
LOG_WARNING(Service_AM,
- "(STUBBED) called, backend requested to show the normal software keyboard.");
-
- SubmitNormalText(u"yuzu");
+ "(STUBBED) called - Default fallback software keyboard does not support text "
+ "check! (error_message={})",
+ Common::UTF16ToUTF8(error_message));
+ finished_check();
}
-
-void DefaultSoftwareKeyboardApplet::ShowTextCheckDialog(
- Service::AM::Applets::SwkbdTextCheckResult text_check_result,
- std::u16string text_check_message) const {
- LOG_WARNING(Service_AM, "(STUBBED) called, backend requested to show the text check dialog.");
-}
-
-void DefaultSoftwareKeyboardApplet::ShowInlineKeyboard(
- InlineAppearParameters appear_parameters) const {
- LOG_WARNING(Service_AM,
- "(STUBBED) called, backend requested to show the inline software keyboard.");
-
- LOG_INFO(Service_AM,
- "\nInlineAppearParameters:"
- "\nmax_text_length={}"
- "\nmin_text_length={}"
- "\nkey_top_scale_x={}"
- "\nkey_top_scale_y={}"
- "\nkey_top_translate_x={}"
- "\nkey_top_translate_y={}"
- "\ntype={}"
- "\nkey_disable_flags={}"
- "\nkey_top_as_floating={}"
- "\nenable_backspace_button={}"
- "\nenable_return_button={}"
- "\ndisable_cancel_button={}",
- appear_parameters.max_text_length, appear_parameters.min_text_length,
- appear_parameters.key_top_scale_x, appear_parameters.key_top_scale_y,
- appear_parameters.key_top_translate_x, appear_parameters.key_top_translate_y,
- appear_parameters.type, appear_parameters.key_disable_flags.raw,
- appear_parameters.key_top_as_floating, appear_parameters.enable_backspace_button,
- appear_parameters.enable_return_button, appear_parameters.disable_cancel_button);
-
- std::thread([this] { SubmitInlineText(u"yuzu"); }).detach();
-}
-
-void DefaultSoftwareKeyboardApplet::HideInlineKeyboard() const {
- LOG_WARNING(Service_AM,
- "(STUBBED) called, backend requested to hide the inline software keyboard.");
-}
-
-void DefaultSoftwareKeyboardApplet::InlineTextChanged(InlineTextParameters text_parameters) const {
- LOG_WARNING(Service_AM,
- "(STUBBED) called, backend requested to change the inline keyboard text.");
-
- LOG_INFO(Service_AM,
- "\nInlineTextParameters:"
- "\ninput_text={}"
- "\ncursor_position={}",
- Common::UTF16ToUTF8(text_parameters.input_text), text_parameters.cursor_position);
-
- submit_inline_callback(Service::AM::Applets::SwkbdReplyType::ChangedString,
- text_parameters.input_text, text_parameters.cursor_position);
-}
-
-void DefaultSoftwareKeyboardApplet::ExitKeyboard() const {
- LOG_WARNING(Service_AM, "(STUBBED) called, backend requested to exit the software keyboard.");
-}
-
-void DefaultSoftwareKeyboardApplet::SubmitNormalText(std::u16string text) const {
- submit_normal_callback(Service::AM::Applets::SwkbdResult::Ok, text);
-}
-
-void DefaultSoftwareKeyboardApplet::SubmitInlineText(std::u16string_view text) const {
- std::this_thread::sleep_for(std::chrono::milliseconds(500));
-
- for (std::size_t index = 0; index < text.size(); ++index) {
- submit_inline_callback(Service::AM::Applets::SwkbdReplyType::ChangedString,
- std::u16string(text.data(), text.data() + index + 1),
- static_cast(index) + 1);
-
- std::this_thread::sleep_for(std::chrono::milliseconds(250));
- }
-
- submit_inline_callback(Service::AM::Applets::SwkbdReplyType::DecidedEnter, std::u16string(text),
- static_cast(text.size()));
-}
-
} // namespace Core::Frontend
diff --git a/src/core/frontend/applets/software_keyboard.h b/src/core/frontend/applets/software_keyboard.h
index 506eb35bb..f9b202664 100755
--- a/src/core/frontend/applets/software_keyboard.h
+++ b/src/core/frontend/applets/software_keyboard.h
@@ -1,116 +1,54 @@
-// Copyright 2021 yuzu Emulator Project
+// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include
-#include
-
+#include
+#include
+#include "common/bit_field.h"
#include "common/common_types.h"
-#include "core/hle/service/am/applets/software_keyboard_types.h"
-
namespace Core::Frontend {
-
-struct KeyboardInitializeParameters {
- std::u16string ok_text;
+struct SoftwareKeyboardParameters {
+ std::u16string submit_text;
std::u16string header_text;
std::u16string sub_text;
std::u16string guide_text;
std::u16string initial_text;
- u32 max_text_length;
- u32 min_text_length;
- s32 initial_cursor_position;
- Service::AM::Applets::SwkbdType type;
- Service::AM::Applets::SwkbdPasswordMode password_mode;
- Service::AM::Applets::SwkbdTextDrawType text_draw_type;
- Service::AM::Applets::SwkbdKeyDisableFlags key_disable_flags;
- bool use_blur_background;
- bool enable_backspace_button;
- bool enable_return_button;
- bool disable_cancel_button;
-};
+ std::size_t max_length;
+ bool password;
+ bool cursor_at_beginning;
-struct InlineAppearParameters {
- u32 max_text_length;
- u32 min_text_length;
- f32 key_top_scale_x;
- f32 key_top_scale_y;
- f32 key_top_translate_x;
- f32 key_top_translate_y;
- Service::AM::Applets::SwkbdType type;
- Service::AM::Applets::SwkbdKeyDisableFlags key_disable_flags;
- bool key_top_as_floating;
- bool enable_backspace_button;
- bool enable_return_button;
- bool disable_cancel_button;
-};
+ union {
+ u8 value;
-struct InlineTextParameters {
- std::u16string input_text;
- s32 cursor_position;
+ BitField<1, 1, u8> disable_space;
+ BitField<2, 1, u8> disable_address;
+ BitField<3, 1, u8> disable_percent;
+ BitField<4, 1, u8> disable_slash;
+ BitField<6, 1, u8> disable_number;
+ BitField<7, 1, u8> disable_download_code;
+ };
};
class SoftwareKeyboardApplet {
public:
virtual ~SoftwareKeyboardApplet();
- virtual void InitializeKeyboard(
- bool is_inline, KeyboardInitializeParameters initialize_parameters,
- std::function
- submit_normal_callback_,
- std::function
- submit_inline_callback_) = 0;
-
- virtual void ShowNormalKeyboard() const = 0;
-
- virtual void ShowTextCheckDialog(Service::AM::Applets::SwkbdTextCheckResult text_check_result,
- std::u16string text_check_message) const = 0;
-
- virtual void ShowInlineKeyboard(InlineAppearParameters appear_parameters) const = 0;
-
- virtual void HideInlineKeyboard() const = 0;
-
- virtual void InlineTextChanged(InlineTextParameters text_parameters) const = 0;
-
- virtual void ExitKeyboard() const = 0;
+ virtual void RequestText(std::function)> out,
+ SoftwareKeyboardParameters parameters) const = 0;
+ virtual void SendTextCheckDialog(std::u16string error_message,
+ std::function finished_check) const = 0;
};
class DefaultSoftwareKeyboardApplet final : public SoftwareKeyboardApplet {
public:
- ~DefaultSoftwareKeyboardApplet() override;
-
- void InitializeKeyboard(
- bool is_inline, KeyboardInitializeParameters initialize_parameters,
- std::function
- submit_normal_callback_,
- std::function
- submit_inline_callback_) override;
-
- void ShowNormalKeyboard() const override;
-
- void ShowTextCheckDialog(Service::AM::Applets::SwkbdTextCheckResult text_check_result,
- std::u16string text_check_message) const override;
-
- void ShowInlineKeyboard(InlineAppearParameters appear_parameters) const override;
-
- void HideInlineKeyboard() const override;
-
- void InlineTextChanged(InlineTextParameters text_parameters) const override;
-
- void ExitKeyboard() const override;
-
-private:
- void SubmitNormalText(std::u16string text) const;
- void SubmitInlineText(std::u16string_view text) const;
-
- KeyboardInitializeParameters parameters;
-
- mutable std::function
- submit_normal_callback;
- mutable std::function
- submit_inline_callback;
+ void RequestText(std::function)> out,
+ SoftwareKeyboardParameters parameters) const override;
+ void SendTextCheckDialog(std::u16string error_message,
+ std::function finished_check) const override;
};
} // namespace Core::Frontend
diff --git a/src/core/frontend/input_interpreter.cpp b/src/core/frontend/input_interpreter.cpp
index 9f6a90e8f..ec5fe660e 100755
--- a/src/core/frontend/input_interpreter.cpp
+++ b/src/core/frontend/input_interpreter.cpp
@@ -12,9 +12,7 @@ InputInterpreter::InputInterpreter(Core::System& system)
: npad{system.ServiceManager()
.GetService("hid")
->GetAppletResource()
- ->GetController(Service::HID::HidController::NPad)} {
- ResetButtonStates();
-}
+ ->GetController(Service::HID::HidController::NPad)} {}
InputInterpreter::~InputInterpreter() = default;
@@ -27,17 +25,6 @@ void InputInterpreter::PollInput() {
button_states[current_index] = button_state;
}
-void InputInterpreter::ResetButtonStates() {
- previous_index = 0;
- current_index = 0;
-
- button_states[0] = 0xFFFFFFFF;
-
- for (std::size_t i = 1; i < button_states.size(); ++i) {
- button_states[i] = 0;
- }
-}
-
bool InputInterpreter::IsButtonPressed(HIDButton button) const {
return (button_states[current_index] & (1U << static_cast(button))) != 0;
}
diff --git a/src/core/frontend/input_interpreter.h b/src/core/frontend/input_interpreter.h
index 9495e3daf..73fc47ffb 100755
--- a/src/core/frontend/input_interpreter.h
+++ b/src/core/frontend/input_interpreter.h
@@ -66,9 +66,6 @@ public:
/// Gets a button state from HID and inserts it into the array of button states.
void PollInput();
- /// Resets all the button states to their defaults.
- void ResetButtonStates();
-
/**
* Checks whether the button is pressed.
*
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 2b363b1d9..161d9f782 100755
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -75,14 +75,10 @@ void HLERequestContext::ParseCommandBuffer(const HandleTable& handle_table, u32_
if (incoming) {
// Populate the object lists with the data in the IPC request.
for (u32 handle = 0; handle < handle_descriptor_header->num_handles_to_copy; ++handle) {
- const u32 copy_handle{rp.Pop()};
- copy_handles.push_back(copy_handle);
- copy_objects.push_back(handle_table.GetGeneric(copy_handle));
+ copy_objects.push_back(handle_table.GetGeneric(rp.Pop()));
}
for (u32 handle = 0; handle < handle_descriptor_header->num_handles_to_move; ++handle) {
- const u32 move_handle{rp.Pop()};
- move_handles.push_back(move_handle);
- move_objects.push_back(handle_table.GetGeneric(move_handle));
+ move_objects.push_back(handle_table.GetGeneric(rp.Pop()));
}
} else {
// For responses we just ignore the handles, they're empty and will be populated when
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index 6fba42615..9a769781b 100755
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -210,14 +210,6 @@ public:
/// Helper function to test whether the output buffer at buffer_index can be written
bool CanWriteBuffer(std::size_t buffer_index = 0) const;
- Handle GetCopyHandle(std::size_t index) const {
- return copy_handles.at(index);
- }
-
- Handle GetMoveHandle(std::size_t index) const {
- return move_handles.at(index);
- }
-
template
std::shared_ptr GetCopyObject(std::size_t index) {
return DynamicObjectCast(copy_objects.at(index));
@@ -293,8 +285,6 @@ private:
std::shared_ptr server_session;
std::shared_ptr thread;
// TODO(yuriks): Check common usage of this and optimize size accordingly
- boost::container::small_vector move_handles;
- boost::container::small_vector copy_handles;
boost::container::small_vector, 8> move_objects;
boost::container::small_vector, 8> copy_objects;
boost::container::small_vector, 8> domain_objects;
diff --git a/src/core/hle/kernel/k_thread.h b/src/core/hle/kernel/k_thread.h
index 1c86fdd20..b442dfe57 100755
--- a/src/core/hle/kernel/k_thread.h
+++ b/src/core/hle/kernel/k_thread.h
@@ -402,7 +402,7 @@ public:
return wait_cancelled;
}
- [[nodiscard]] void ClearWaitCancelled() {
+ void ClearWaitCancelled() {
wait_cancelled = false;
}
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index f7d3f218a..8fd990577 100755
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -67,13 +67,8 @@ struct KernelCore::Impl {
is_phantom_mode_for_singlecore = false;
InitializePhysicalCores();
-
- // Derive the initial memory layout from the emulated board
- KMemoryLayout memory_layout;
- DeriveInitialMemoryLayout(memory_layout);
- InitializeMemoryLayout(memory_layout);
- InitializeSystemResourceLimit(kernel, system, memory_layout);
- InitializeSlabHeaps();
+ InitializeSystemResourceLimit(kernel, system);
+ InitializeMemoryLayout();
InitializeSchedulers();
InitializeSuspendThreads();
InitializePreemption(kernel);
@@ -142,32 +137,27 @@ struct KernelCore::Impl {
}
// Creates the default system resource limit
- void InitializeSystemResourceLimit(KernelCore& kernel, Core::System& system,
- const KMemoryLayout& memory_layout) {
+ void InitializeSystemResourceLimit(KernelCore& kernel, Core::System& system) {
system_resource_limit = std::make_shared(kernel, system);
- const auto [total_size, kernel_size] = memory_layout.GetTotalAndKernelMemorySizes();
// If setting the default system values fails, then something seriously wrong has occurred.
- ASSERT(system_resource_limit->SetLimitValue(LimitableResource::PhysicalMemory, total_size)
+ ASSERT(system_resource_limit->SetLimitValue(LimitableResource::PhysicalMemory, 0x100000000)
.IsSuccess());
ASSERT(system_resource_limit->SetLimitValue(LimitableResource::Threads, 800).IsSuccess());
ASSERT(system_resource_limit->SetLimitValue(LimitableResource::Events, 900).IsSuccess());
ASSERT(system_resource_limit->SetLimitValue(LimitableResource::TransferMemory, 200)
.IsSuccess());
ASSERT(system_resource_limit->SetLimitValue(LimitableResource::Sessions, 1133).IsSuccess());
- system_resource_limit->Reserve(LimitableResource::PhysicalMemory, kernel_size);
+ // Derived from recent software updates. The kernel reserves 27MB
+ constexpr u64 kernel_size{0x1b00000};
+ if (!system_resource_limit->Reserve(LimitableResource::PhysicalMemory, kernel_size)) {
+ UNREACHABLE();
+ }
// Reserve secure applet memory, introduced in firmware 5.0.0
- constexpr u64 secure_applet_memory_size{Common::Size_4_MB};
+ constexpr u64 secure_applet_memory_size{0x400000};
ASSERT(system_resource_limit->Reserve(LimitableResource::PhysicalMemory,
secure_applet_memory_size));
-
- // This memory seems to be reserved on hardware, but is not reserved/used by yuzu.
- // Likely Horizon OS reserved memory
- // TODO(ameerj): Derive the memory rather than hardcode it.
- constexpr u64 unknown_reserved_memory{0x2f896000};
- ASSERT(system_resource_limit->Reserve(LimitableResource::PhysicalMemory,
- unknown_reserved_memory));
}
void InitializePreemption(KernelCore& kernel) {
@@ -541,7 +531,11 @@ struct KernelCore::Impl {
linear_region_start);
}
- void InitializeMemoryLayout(const KMemoryLayout& memory_layout) {
+ void InitializeMemoryLayout() {
+ // Derive the initial memory layout from the emulated board
+ KMemoryLayout memory_layout;
+ DeriveInitialMemoryLayout(memory_layout);
+
const auto system_pool = memory_layout.GetKernelSystemPoolRegionPhysicalExtents();
const auto applet_pool = memory_layout.GetKernelAppletPoolRegionPhysicalExtents();
const auto application_pool = memory_layout.GetKernelApplicationPoolRegionPhysicalExtents();
@@ -584,14 +578,11 @@ struct KernelCore::Impl {
system.Kernel(), system.DeviceMemory(), nullptr, {time_phys_addr, time_size / PageSize},
KMemoryPermission::None, KMemoryPermission::Read, time_phys_addr, time_size,
"Time:SharedMemory");
- }
- void InitializeSlabHeaps() {
// Allocate slab heaps
user_slab_heap_pages = std::make_unique>();
- // TODO(ameerj): This should be derived, not hardcoded within the kernel
- constexpr u64 user_slab_heap_size{0x3de000};
+ constexpr u64 user_slab_heap_size{0x1ef000};
// Reserve slab heaps
ASSERT(
system_resource_limit->Reserve(LimitableResource::PhysicalMemory, user_slab_heap_size));
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp
index 51a9c393b..9d5956ead 100755
--- a/src/core/hle/kernel/process.cpp
+++ b/src/core/hle/kernel/process.cpp
@@ -120,7 +120,9 @@ std::shared_ptr Process::Create(Core::System& system, std::string name,
std::shared_ptr process = std::make_shared(system);
process->name = std::move(name);
- process->resource_limit = kernel.GetSystemResourceLimit();
+ // TODO: This is inaccurate
+ // The process should hold a reference to the kernel-wide resource limit.
+ process->resource_limit = std::make_shared(kernel, system);
process->status = ProcessStatus::Created;
process->program_id = 0;
process->process_id = type == ProcessType::KernelInternal ? kernel.CreateNewKernelProcessID()
@@ -158,6 +160,9 @@ void Process::DecrementThreadCount() {
}
u64 Process::GetTotalPhysicalMemoryAvailable() const {
+ // TODO: This is expected to always return the application memory pool size after accurately
+ // reserving kernel resources. The current workaround uses a process-local resource limit of
+ // application memory pool size, which is inaccurate.
const u64 capacity{resource_limit->GetFreeValue(LimitableResource::PhysicalMemory) +
page_table->GetTotalHeapSize() + GetSystemResourceSize() + image_size +
main_thread_stack_size};
@@ -165,6 +170,7 @@ u64 Process::GetTotalPhysicalMemoryAvailable() const {
if (capacity < memory_usage_capacity) {
return capacity;
}
+
return memory_usage_capacity;
}
@@ -266,6 +272,10 @@ ResultCode Process::LoadFromMetadata(const FileSys::ProgramMetadata& metadata,
system_resource_size = metadata.GetSystemResourceSize();
image_size = code_size;
+ // Set initial resource limits
+ resource_limit->SetLimitValue(
+ LimitableResource::PhysicalMemory,
+ kernel.MemoryManager().GetSize(KMemoryManager::Pool::Application));
KScopedResourceReservation memory_reservation(resource_limit, LimitableResource::PhysicalMemory,
code_size + system_resource_size);
if (!memory_reservation.Succeeded()) {
@@ -314,6 +324,16 @@ ResultCode Process::LoadFromMetadata(const FileSys::ProgramMetadata& metadata,
UNREACHABLE();
}
+ // Set initial resource limits
+ resource_limit->SetLimitValue(
+ LimitableResource::PhysicalMemory,
+ kernel.MemoryManager().GetSize(KMemoryManager::Pool::Application));
+
+ resource_limit->SetLimitValue(LimitableResource::Threads, 608);
+ resource_limit->SetLimitValue(LimitableResource::Events, 700);
+ resource_limit->SetLimitValue(LimitableResource::TransferMemory, 128);
+ resource_limit->SetLimitValue(LimitableResource::Sessions, 894);
+
// Create TLS region
tls_region_address = CreateTLSRegion();
memory_reservation.Commit();
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index b5cef7f9f..4374487a3 100755
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -971,7 +971,7 @@ private:
auto storage = applet->GetBroker().PopNormalDataToGame();
if (storage == nullptr) {
- LOG_DEBUG(Service_AM,
+ LOG_ERROR(Service_AM,
"storage is a nullptr. There is no data in the current normal channel");
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ERR_NO_DATA_IN_CHANNEL);
@@ -1002,7 +1002,7 @@ private:
auto storage = applet->GetBroker().PopInteractiveDataToGame();
if (storage == nullptr) {
- LOG_DEBUG(Service_AM,
+ LOG_ERROR(Service_AM,
"storage is a nullptr. There is no data in the current interactive channel");
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ERR_NO_DATA_IN_CHANNEL);
@@ -1125,7 +1125,7 @@ ILibraryAppletCreator::ILibraryAppletCreator(Core::System& system_)
{2, nullptr, "AreAnyLibraryAppletsLeft"},
{10, &ILibraryAppletCreator::CreateStorage, "CreateStorage"},
{11, &ILibraryAppletCreator::CreateTransferMemoryStorage, "CreateTransferMemoryStorage"},
- {12, &ILibraryAppletCreator::CreateHandleStorage, "CreateHandleStorage"},
+ {12, nullptr, "CreateHandleStorage"},
};
RegisterHandlers(functions);
}
@@ -1134,15 +1134,14 @@ ILibraryAppletCreator::~ILibraryAppletCreator() = default;
void ILibraryAppletCreator::CreateLibraryApplet(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
-
const auto applet_id = rp.PopRaw();
- const auto applet_mode = rp.PopRaw();
+ const auto applet_mode = rp.PopRaw();
LOG_DEBUG(Service_AM, "called with applet_id={:08X}, applet_mode={:08X}", applet_id,
applet_mode);
const auto& applet_manager{system.GetAppletManager()};
- const auto applet = applet_manager.GetApplet(applet_id, applet_mode);
+ const auto applet = applet_manager.GetApplet(applet_id);
if (applet == nullptr) {
LOG_ERROR(Service_AM, "Applet doesn't exist! applet_id={}", applet_id);
@@ -1160,18 +1159,9 @@ void ILibraryAppletCreator::CreateLibraryApplet(Kernel::HLERequestContext& ctx)
void ILibraryAppletCreator::CreateStorage(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
-
- const s64 size{rp.Pop()};
-
+ const u64 size{rp.Pop()};
LOG_DEBUG(Service_AM, "called, size={}", size);
- if (size <= 0) {
- LOG_ERROR(Service_AM, "size is less than or equal to 0");
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(RESULT_UNKNOWN);
- return;
- }
-
std::vector buffer(size);
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
@@ -1180,65 +1170,18 @@ void ILibraryAppletCreator::CreateStorage(Kernel::HLERequestContext& ctx) {
}
void ILibraryAppletCreator::CreateTransferMemoryStorage(Kernel::HLERequestContext& ctx) {
+ LOG_DEBUG(Service_AM, "called");
+
IPC::RequestParser rp{ctx};
- struct Parameters {
- u8 permissions;
- s64 size;
- };
-
- const auto parameters{rp.PopRaw()};
- const auto handle{ctx.GetCopyHandle(0)};
-
- LOG_DEBUG(Service_AM, "called, permissions={}, size={}, handle={:08X}", parameters.permissions,
- parameters.size, handle);
-
- if (parameters.size <= 0) {
- LOG_ERROR(Service_AM, "size is less than or equal to 0");
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(RESULT_UNKNOWN);
- return;
- }
+ rp.SetCurrentOffset(3);
+ const auto handle{rp.Pop()};
auto transfer_mem =
system.CurrentProcess()->GetHandleTable().Get(handle);
if (transfer_mem == nullptr) {
- LOG_ERROR(Service_AM, "transfer_mem is a nullptr for handle={:08X}", handle);
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(RESULT_UNKNOWN);
- return;
- }
-
- const u8* const mem_begin = transfer_mem->GetPointer();
- const u8* const mem_end = mem_begin + transfer_mem->GetSize();
- std::vector memory{mem_begin, mem_end};
-
- IPC::ResponseBuilder rb{ctx, 2, 0, 1};
- rb.Push(RESULT_SUCCESS);
- rb.PushIpcInterface(system, std::move(memory));
-}
-
-void ILibraryAppletCreator::CreateHandleStorage(Kernel::HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
-
- const s64 size{rp.Pop()};
- const auto handle{ctx.GetCopyHandle(0)};
-
- LOG_DEBUG(Service_AM, "called, size={}, handle={:08X}", size, handle);
-
- if (size <= 0) {
- LOG_ERROR(Service_AM, "size is less than or equal to 0");
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(RESULT_UNKNOWN);
- return;
- }
-
- auto transfer_mem =
- system.CurrentProcess()->GetHandleTable().Get(handle);
-
- if (transfer_mem == nullptr) {
- LOG_ERROR(Service_AM, "transfer_mem is a nullptr for handle={:08X}", handle);
+ LOG_ERROR(Service_AM, "shared_mem is a nullpr for handle={:08X}", handle);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_UNKNOWN);
return;
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h
index aefbdf0d5..f6a453ab7 100755
--- a/src/core/hle/service/am/am.h
+++ b/src/core/hle/service/am/am.h
@@ -254,7 +254,6 @@ private:
void CreateLibraryApplet(Kernel::HLERequestContext& ctx);
void CreateStorage(Kernel::HLERequestContext& ctx);
void CreateTransferMemoryStorage(Kernel::HLERequestContext& ctx);
- void CreateHandleStorage(Kernel::HLERequestContext& ctx);
};
class IApplicationFunctions final : public ServiceFramework {
diff --git a/src/core/hle/service/am/applets/applets.cpp b/src/core/hle/service/am/applets/applets.cpp
index 5ddad851a..e2f3b7563 100755
--- a/src/core/hle/service/am/applets/applets.cpp
+++ b/src/core/hle/service/am/applets/applets.cpp
@@ -241,31 +241,31 @@ void AppletManager::ClearAll() {
frontend = {};
}
-std::shared_ptr