Files
ARMSX2/.gitignore
T
jpolo1224 bc951c84dd Android: run the Discord SDK out of process, and finish the friends UI
ARMSX2 is GPL-3.0+ and the Discord Social SDK is proprietary. Linking them into
one binary would make the emulator a combined work with a library whose
corresponding source cannot be supplied, so the SDK now runs as a separate
program in its own process and the two talk over a deliberately dumb message
interface: a title, a serial, an image URL, a list of names. No emulator type
crosses that line.

libemucore has no DT_NEEDED on the SDK and never loads it; the bridge builds
into its own libarmsx2_discord.so, loaded only in :discord. With the feature
switched off that process does not exist and the library is never mapped at all.
Verify with: llvm-readelf -d libemucore_4k.so | grep -i discord  (must be empty)

The SDK itself is no longer in this repository. Discord's terms permit shipping
it inside a working application but not republishing the raw SDK, so it is an
optional private build input via DISCORD_SDK_DIR. Unset -- every public clone --
the feature compiles out and the UI reports itself unavailable. Deliberately not
a product flavour: one release variant, and the only difference is whether that
directory was present at build time.

Also here, from testing the feature into shape:

- Presence uses the game's own cover art, and our logo (an Art Asset key, not a
  repo URL, so it tracks the current mark) when idle.
- Friends show their avatar AND the cover of what they are playing, never one
  instead of the other -- swapping the face out for box art loses the identity
  exactly when the row gets interesting.
- A count badge on the Friends entry point, in the drawer and in the in-game
  header, because the point of it is to be seen by someone not looking at the
  friends list.
- Friends moved off the in-game tab rail into a header button with its own
  panel. It was last on a rail that scrolls, so reaching it meant knowing it was
  there. The panel is composed, not a Dialog: a Dialog takes its own focused
  window and swallows gamepad keys before our input plumbing sees them.
- "<friend> is now online" is one Compose banner at the Activity root, replacing
  a split between an emulator OSD message in game and nothing at all in the
  library. The OSD is text-only and could never show an avatar.
- Reconnect after a drop, with backoff. The SDK does not retry and its
  connection does not survive being backgrounded, so a drop used to be terminal
  until the app was restarted.
2026-07-28 01:38:34 -04:00

166 lines
2.8 KiB
Plaintext

.*.swp
.*.swn
.*.swo
*.suo
*.ncb
*.sdf
*.opensdf
*.user
*.log
*.dsp
*.dsw
*.bsc
*.aps
*.exe
*.wav
*.trace
*.dump
*.asm
# ...but hand-written source assembly is real source, not build output.
!common/FastJmp.asm
!common/FastJmp.aarch64.asm
*.VC.db
*.VC.VC.opendb
_ReSharper.*
pcsx2.snapshot_*
svnrev.h
/build*
/obj-*
*.obj
.DS_Store
Thumbs.db
Debug.txt
install_log.txt
bad_shader_*
crash-*.txt
# Ad-hoc dev logs (produced by instrumentation / testing)
crash.txt
emulog.txt
vu0_ops_*.log
vu1_ops_*.log
vu0_rec.log
vu1_rec.log
vu1_interp.log
vu1_xgkick_*.log
vkinfo_*.txt
# Python bytecode
__pycache__/
*.pyc
Debug
Release
Devel
oprofile_data/
# Recording Specific Ignores (pcsx2-rr)
*.p2s
*.p2m2
*.p2m2_backup
*.p2m2_SaveState.p2s
# Visual Studio upgrades
/Backup*
/UpgradeLog*.htm
/.vscode*
# Jetbrains Rider
/.idea*
# KDevelop 4 Workspace Configuration Files
*.kdev4
/.kdev4*
# Kate Projects
.kateproject*
# Resources and docs in /bin are tracked
/bin/**/*.dll
/bin/**/*.dmp
/bin/**/*.exp
/bin/**/*.ilk
/bin/**/*.lib
/bin/**/*.pdb
/bin/pcsx2*
/bin/qt.conf
/bin/bios
/bin/cache
/bin/cheats
/bin/patches
/bin/covers
/bin/dumps
/bin/gamesettings
/bin/help
/bin/inis
/bin/inis/debuggersettings
/bin/logs
/bin/memcards
/bin/plugins
/bin/snaps
/bin/sstates
/bin/textures
/bin/translations
/bin/inputprofiles
/bin/videos
/bin/portable.ini
/bin/portable.txt
# Resources and docs copied from /bin
/bin-arm64
# Manually added by user.
/bin/resources/patches.zip
# Resources that are runtime downloaded.
/bin/resources/fonts/NotoSansJP-Regular.ttf
/bin/resources/fonts/NotoSansKR-Regular.ttf
/bin/resources/fonts/NotoSansSC-Regular.ttf
/bin/resources/fonts/NotoSansTC-Regular.ttf
/deps-build
/deps
/deps-arm64
/pcsx2-deps
/gammaray-build
/gammaray
/ipch
!/3rdparty/libjpeg/change.log
/tools/bin
.vs
/out/build/x64-Debug (default)
CMakeSettings.json
/ci-artifacts/
/out/
/.cache/
# Achievement sounds are shipped assets, not build output — keep them tracked
!platforms/android/app/src/main/assets/resources/sounds/**/*.wav
# RetroAchievements client User-Agent secret — the real pinned version is injected
# from this header at build time and must NEVER be committed (spoofing prevention).
ra_ua_secret.h
# Kotlin compiler session scratch dir created by Gradle next to the android project.
platforms/android/.kotlin/
# Discord Social SDK — supplied privately at build time via DISCORD_SDK_DIR, never committed.
# Discord's terms permit shipping the SDK inside a working application but not republishing the
# raw SDK on its own, so none of it belongs in this repository. Our own bridge, IPC interface and
# helper service ARE here; only Discord's material is excluded.
**/libdiscord_partner_sdk.so
**/discord_partner_sdk.aar
**/discord_partner_sdk.jar
platforms/android/app/src/main/cpp/3rdparty/discord/include/