Merge branch 'master' into tex-cache

This commit is contained in:
SachinVin 2022-09-01 19:50:32 +05:30 committed by GitHub
commit 9268b7d48e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 78 additions and 13 deletions

View file

@ -1,12 +1,15 @@
#!/bin/bash -ex #!/bin/bash -ex
export NDK_CCACHE=$(which ccache) export NDK_CCACHE=$(which ccache)
[ "$GITHUB_REPOSITORY" = "citra-emu/citra-canary" ] &&
BUILD_FLAVOR=canary ||
BUILD_FLAVOR=nightly
ccache -s ccache -s
cd src/android cd src/android
chmod +x ./gradlew chmod +x ./gradlew
./gradlew bundleRelease ./gradlew assemble${BUILD_FLAVOR}Release
./gradlew assembleRelease ./gradlew bundle${BUILD_FLAVOR}Release
ccache -s ccache -s

View file

@ -3,8 +3,21 @@
. ./.ci/common/pre-upload.sh . ./.ci/common/pre-upload.sh
REV_NAME="citra-${GITDATE}-${GITREV}" REV_NAME="citra-${GITDATE}-${GITREV}"
[ "${GITHUB_REPOSITORY}" = "citra-emu/citra-canary" ] &&
BUILD_FLAVOR=canary ||
BUILD_FLAVOR=nightly
cp src/android/app/build/outputs/apk/release/app-release.apk \ cp src/android/app/build/outputs/apk/${BUILD_FLAVOR}/release/app-${BUILD_FLAVOR}-release.apk \
"artifacts/${REV_NAME}.apk" "artifacts/${REV_NAME}.apk"
cp src/android/app/build/outputs/bundle/release/app-release.aab \ cp src/android/app/build/outputs/bundle/${BUILD_FLAVOR}Release/app-${BUILD_FLAVOR}-release.aab \
"artifacts/${REV_NAME}.aab" "artifacts/${REV_NAME}.aab"
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]
then
echo "Signing apk..."
base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > ks.jks
java -jar $(which apksigner) sign --ks ks.jks \
--ks-key-alias "${ANDROID_KEY_ALIAS}" \
--ks-pass env:ANDROID_KEYSTORE_PASS "artifacts/${REV_NAME}.apk"
fi

View file

@ -129,10 +129,14 @@ jobs:
- name: Deps - name: Deps
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install ccache -y sudo apt-get install ccache apksigner -y
- name: Build - name: Build
run: ./.ci/android/build.sh run: ./.ci/android/build.sh
- name: Copy artifacts - name: Copy and sign artifacts
env:
ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }}
run: ./.ci/android/upload.sh run: ./.ci/android/upload.sh
- name: Upload - name: Upload
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
@ -153,7 +157,7 @@ jobs:
TRANSIFEX_API_TOKEN: ${{ secrets.TRANSIFEX_API_TOKEN }} TRANSIFEX_API_TOKEN: ${{ secrets.TRANSIFEX_API_TOKEN }}
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [build] needs: [build, android]
if: ${{ startsWith(github.ref, 'refs/tags/') }} if: ${{ startsWith(github.ref, 'refs/tags/') }}
steps: steps:
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v3
@ -174,4 +178,4 @@ jobs:
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
asset_paths: '["./**/*.tar.*","./**/*.7z","./**/*.zip"]' asset_paths: '["./**/*.tar.*","./**/*.7z","./**/*.zip","./**/*.apk","./**/*.aab"]'

View file

@ -2158,6 +2158,10 @@ PlotWidget {
padding: 0px; padding: 0px;
} }
TouchScreenPreview {
qproperty-dotHighlightColor: #3daee9;
background-color: #0f1922;
}
QListWidget#selectorList { QListWidget#selectorList {
background-color: #0f1922; background-color: #0f1922;
@ -2168,4 +2172,4 @@ QLineEdit,
QTreeView#hotkey_list, QTreeView#hotkey_list,
QScrollArea#scrollArea QTreeView { QScrollArea#scrollArea QTreeView {
background-color: #0f1922; background-color: #0f1922;
} }

View file

@ -116,6 +116,10 @@ function(find_ffmpeg LIBNAME)
endforeach() endforeach()
string(TOUPPER ${LIBNAME} LIBNAME_UPPER) string(TOUPPER ${LIBNAME} LIBNAME_UPPER)
file(STRINGS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version.h" _FFmpeg_VERSION_H_CONTENTS REGEX "#define LIB${LIBNAME_UPPER}_VERSION_(MAJOR|MINOR|MICRO) ") file(STRINGS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version.h" _FFmpeg_VERSION_H_CONTENTS REGEX "#define LIB${LIBNAME_UPPER}_VERSION_(MAJOR|MINOR|MICRO) ")
if (EXISTS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version_major.h")
file(STRINGS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version_major.h" _FFmpeg_MAJOR_VERSION_H_CONTENTS REGEX "#define LIB${LIBNAME_UPPER}_VERSION_MAJOR ")
string(APPEND _FFmpeg_VERSION_H_CONTENTS "\n" ${_FFmpeg_MAJOR_VERSION_H_CONTENTS})
endif()
set(_FFmpeg_VERSION_REGEX "([0-9]+)") set(_FFmpeg_VERSION_REGEX "([0-9]+)")
foreach(v MAJOR MINOR MICRO) foreach(v MAJOR MINOR MICRO)
if("${_FFmpeg_VERSION_H_CONTENTS}" MATCHES "#define LIB${LIBNAME_UPPER}_VERSION_${v}[\\t ]+${_FFmpeg_VERSION_REGEX}") if("${_FFmpeg_VERSION_H_CONTENTS}" MATCHES "#define LIB${LIBNAME_UPPER}_VERSION_${v}[\\t ]+${_FFmpeg_VERSION_REGEX}")

View file

@ -83,6 +83,17 @@ android {
} }
} }
flavorDimensions "version"
productFlavors {
canary {
dimension "version"
applicationIdSuffix ".canary"
}
nightly {
dimension "version"
}
}
externalNativeBuild { externalNativeBuild {
cmake { cmake {
version "3.18.1" version "3.18.1"
@ -140,5 +151,10 @@ def getVersion() {
logger.error('Cannot find git, defaulting to dummy version number') logger.error('Cannot find git, defaulting to dummy version number')
} }
if (System.getenv("GITHUB_ACTIONS") != null) {
def gitTag = System.getenv("GIT_TAG_NAME")
versionName = gitTag ?: versionName
}
return versionName return versionName
} }

View file

@ -391,6 +391,9 @@ int main(int argc, char** argv) {
return -1; return -1;
case Core::System::ResultStatus::Success: case Core::System::ResultStatus::Success:
break; // Expected case break; // Expected case
default:
LOG_ERROR(Frontend, "Error while loading ROM: {}", system.GetStatusDetails());
break;
} }
system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "SDL"); system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "SDL");
@ -437,7 +440,18 @@ int main(int argc, char** argv) {
}); });
while (emu_window->IsOpen()) { while (emu_window->IsOpen()) {
system.RunLoop(); const auto result = system.RunLoop();
switch (result) {
case Core::System::ResultStatus::ShutdownRequested:
emu_window->RequestClose();
break;
case Core::System::ResultStatus::Success:
break;
default:
LOG_ERROR(Frontend, "Error in main run loop: {}", result, system.GetStatusDetails());
break;
}
} }
render_thread.join(); render_thread.join();

View file

@ -104,6 +104,10 @@ bool EmuWindow_SDL2::IsOpen() const {
return is_open; return is_open;
} }
void EmuWindow_SDL2::RequestClose() {
is_open = false;
}
void EmuWindow_SDL2::OnResize() { void EmuWindow_SDL2::OnResize() {
int width, height; int width, height;
SDL_GetWindowSize(render_window, &width, &height); SDL_GetWindowSize(render_window, &width, &height);
@ -134,7 +138,7 @@ void EmuWindow_SDL2::Fullscreen() {
EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) { EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) {
// Initialize the window // Initialize the window
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER) < 0) { if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER) < 0) {
LOG_CRITICAL(Frontend, "Failed to initialize SDL2! Exiting..."); LOG_CRITICAL(Frontend, "Failed to initialize SDL2: {}! Exiting...", SDL_GetError());
exit(1); exit(1);
} }
@ -258,7 +262,7 @@ void EmuWindow_SDL2::PollEvents() {
OnResize(); OnResize();
break; break;
case SDL_WINDOWEVENT_CLOSE: case SDL_WINDOWEVENT_CLOSE:
is_open = false; RequestClose();
break; break;
} }
break; break;
@ -289,7 +293,7 @@ void EmuWindow_SDL2::PollEvents() {
OnFingerUp(); OnFingerUp();
break; break;
case SDL_QUIT: case SDL_QUIT:
is_open = false; RequestClose();
break; break;
default: default:
break; break;

View file

@ -46,6 +46,9 @@ public:
/// Whether the window is still open, and a close request hasn't yet been sent /// Whether the window is still open, and a close request hasn't yet been sent
bool IsOpen() const; bool IsOpen() const;
/// Close the window.
void RequestClose();
/// Creates a new context that is shared with the current context /// Creates a new context that is shared with the current context
std::unique_ptr<GraphicsContext> CreateSharedContext() const override; std::unique_ptr<GraphicsContext> CreateSharedContext() const override;