This commit introduces the ability to launch games with custom configurations supplied via an Android intent. This allows external applications to provide specific settings for a game at launch time.
Key changes include:
* **`CustomSettingsHandler.kt`**: A new class responsible for:
* Processing incoming intents with custom settings.
* Finding the target game in the user's library by its title ID.
* Writing the custom settings to a per-game INI file (`config/custom/<title_id>.ini`).
* Handling potential conflicts if a custom configuration already exists, prompting the user to overwrite or cancel.
* Integrating with `DriverResolver` to check for and handle required GPU drivers specified in the custom settings.
* Initializing the native per-game configuration.
* **`DriverResolver.kt`**: A new utility class for managing GPU drivers specified in custom settings:
* Extracts the driver path from the custom settings INI content.
* Checks if the required driver exists locally.
* If not found locally, searches for the driver in predefined GitHub repositories (Mr. Purple Turnip, GameHub Adreno 8xx, KIMCHI Turnip, Weab-Chan Freedreno).
* Prompts the user to download and install the missing driver if found online.
* Handles automatic download and installation of drivers using `DriverViewModel`.
* Notifies the user if a required driver cannot be found or installed.
* **`AndroidManifest.xml`**:
* Added a new intent filter for the action `dev.eden.eden_emulator.LAUNCH_WITH_CUSTOM_CONFIG` to `EmulationActivity`. This allows the app to respond to custom settings intents.
* **`EmulationFragment.kt`**:
* Modified `onCreate` to detect and handle the new custom settings intent.
* If a custom settings intent is received:
* It uses `CustomSettingsHandler.applyCustomSettingsWithDriverCheck` to process the settings asynchronously. This allows for driver checks and user interaction (e.g., overwrite confirmation, driver installation).
* Displays appropriate error messages via `Toast` if custom settings processing fails (e.g., game not found, driver issues).
* The game is then launched with the applied custom settings.
* If a regular file intent or navigation arguments are used, the existing logic for loading game configurations (including custom per-game configs) is retained.
* Ensures that per-game configurations are correctly loaded or unloaded based on how the game is launched.
Create a new directory for checking out the source code (it must be named
breakpad).
mkdir breakpad &&cd breakpad
Run the fetch tool from depot_tools to download all the source repos.
fetch breakpad
cd src
Build the source.
./configure && make
You can also cd to another directory and run configure from there to build
outside the source tree.
This will build the processor tools (src/processor/minidump_stackwalk,
src/processor/minidump_dump, etc), and when building on Linux it will
also build the client libraries and some tools
(src/tools/linux/dump_syms/dump_syms,
src/tools/linux/md2core/minidump-2-core, etc).
Optionally, run tests.
make check
Optionally, install the built libraries
make install
If you need to reconfigure your build be sure to run make distclean first.
To update an existing checkout to a newer revision, you can
git pull as usual, but then you should run gclient sync to ensure that the
dependent repos are up-to-date.
To request change review
Follow the steps above to get the source and build it.
Make changes. Build and test your changes.
For core code like processor use methods above.
For linux/mac/windows, there are test targets in each project file.
Commit your changes to your local repo and upload them to the server.
http://dev.chromium.org/developers/contributing-code
e.g. git commit ... && git cl upload ...
You will be prompted for credential and a description.