Commit Graph

83 Commits

Author SHA1 Message Date
Silent 6c21811090
Make DolphinAnalytics a true singleton - static local variables are initialized in a thread safe manner since C++11
Also works around a Visual Studio 2017 bug where static inline class fields are destructed multiple times
2019-06-23 21:43:47 +02:00
Lioncash 4f1f55093f Common/MsgHandler: Namespace code within the Common namespace
Closes another gap in the Common library where code isn't being
namespaced under it.
2019-06-19 16:03:55 -04:00
Connor McLaughlin bed2d66bed
Merge pull request #8117 from weihuoya/threaded_env
android: get java env from thread local storage
2019-06-08 20:42:15 +10:00
Lioncash c0c0e412e0 Core/ConfigManager: Use forward declarations where applicable
Avoids dragging in IniFile, EXI device and SI device headers in this header which is
quite widely used throughout the codebase.

This also uncovered a few cases where indirect inclusions were being
relied upon, which this also fixes.
2019-06-07 19:54:39 -04:00
weihuoya 0dec8feadb android: thread local env 2019-05-29 20:22:26 +08:00
David Korth 8417c78b7a Update Discord rich presence when the title changes
This allows us to update the rich presence description if a channel
is launched from the Wii Menu. It also handles other PPC title
launches, e.g. Smash Bros. Masterpieces.

Host.h: Added Host_TitleChanged().

DolphinNoGUI/MainNoGUI.cpp: Implemented Host_TitleChanged().
DolphinQt/Host.cpp: Implemented Host_TitleChanged().

Android/jni/MainAndroid.cpp: Stubbed Host_TitleChanged().
DSPTool/StubHost.cpp: Stubbed Host_TitleChanged().
UnitTests/StubHost.cpp: Stubbed Host_TitleChanged().
2019-05-24 14:12:48 +02:00
spycrab 61350b3d98 Core/Host: Allow frontends to block inputs 2019-03-21 13:16:21 +01:00
zackhow 3cc10dcaf9 Android: Call update touch pointer from thread.
Fixes crash in single core when attaching the JVM
2019-01-28 21:42:12 -05:00
Stenzek c6f151c4e1 Android: Use scaledDensity as backbuffer scale (for imgui) 2019-01-25 11:15:57 +10:00
Stenzek 600d1fc0bc Renderer: Use imgui for drawing debug text and OSD 2019-01-25 11:15:57 +10:00
zackhow e8739156e4 Android: Normalize pointer touches based on rendered aspect ratio
This allows the defaults to be actual defaults across devices with different
screen sizes
2019-01-23 17:41:33 -05:00
zackhow 1db02c14c7 Android: add IR width/height/center option in emu menu
This sets the IR/Width, IR/Height, and IR/Center per game, so a controller profile is used
to save the value, then enable the profile in the game ini, then reload the
control configs.
2019-01-19 23:21:56 -05:00
JosJuice 63c9831b93 Add Android support for automatic disc changing 2019-01-04 09:24:42 +01:00
zackhow 405b37deaa Android: Speed up game settings saving
Previously would take several seconds to save, sometimes causing ANRs, which
was made worse when adding all the controller values. Now we only load/save
each section instead of doing it for each setting. Also added a method
to save an individual setting.
2018-10-28 20:22:06 -04:00
zackhow 5d93a10c60 Android: Add game specific gc/wii controller settings 2018-10-28 20:22:06 -04:00
weihuoya 1e3a297900 android: remove enter and exit transition 2018-10-27 18:29:01 +08:00
Stenzek eb284b5d66 VideoBackends: Pass window system info from host on creation 2018-10-20 21:11:34 +10:00
Stenzek a3961750a7 Drop Host_GetRenderSurface and pass display to backend 2018-10-20 21:11:34 +10:00
Stenzek 134d967be2 Refactoring and cleanup of GLInterface (now GLContext) 2018-10-20 21:11:34 +10:00
Mat M ecd4897d43
Merge pull request #7437 from stenzek/graphics-options-race
Fix race condition caused by opening graphics options while running
2018-10-12 10:29:28 -04:00
Stenzek a877d5f6dc Remove unused Host_ShowVideoConfig 2018-09-28 14:05:53 +10:00
zackhow 1311f84706 Android: Run Directory Initialization as a thread instead of service
Two reasons for this change. First, it appears that some android launchers do some sort of call into
the application when long pressing the app icon, which in turn calls the DirectoryInit service. This
was ok to do prior to Oreo but will cause crashes with the new restrictions on services running
in the background. Which leads to the second reason that DirectoryInit doesn't need to be a service
at all since these actions are required for dolphin to function and shouldn't be a scheduled action.
So we instead just kick this off in a new thread and send the broadcast when done.
2018-09-14 09:54:36 -04:00
Lioncash 7aa305ea35 Profiler: Migrate global g_ProfileBlocks boolean to JitOptions
This global belongs in the JitOptions structure, as it's a conditional
setting (A.K.A. option) that changes the behavior of what the JIT does.

Plus it keeps the scope of the variable constrained to the general area
it's intended to be used and nothing further.
2018-08-27 11:30:19 -04:00
zackhow 82f82a6b7d Android: Add usage statistics to android.
Added an option in General config to enable/disable usage statistics. Added a popup on first open if
the user would like to engage in reporting. Clicking cancel or out of the box opts out. Only
clicking 'Ok' will enable reporting. Also added a new android specific values to report.
2018-08-23 17:31:17 -04:00
Lioncash 6f473b96d0 PowerPC: Convert CPUCore enum into an enum class
Makes the enum values strongly-typed and prevents the identifiers from
polluting the PowerPC namespace. This also cleans up the parameters of
some functions where we were accepting an ambiguous int type and
expecting the correct values to be passed in.

Now those parameters accept a PowerPC::CPUCore type only, making it
immediately obvious which values should be passed in. It also turns out
we were storing these core types into other structures as plain ints,
which have also been corrected.

As this type is used directly with the configuration code, we need to
provide our own overloaded insertion (<<) and extraction (>>) operators
in order to make it compatible with it. These are fairly trivial to
implement, so there's no issue here.

A minor adjustment to TryParse() was required, as our generic function
was doing the following:

N tmp = 0;

which is problematic, as custom types may not be able to have that
assignment performed (e.g. strongly-typed enums), so we change this to:

N tmp;

which is sufficient, as the value is attempted to be initialized
immediately under that statement.
2018-06-15 10:27:59 -04:00
JosJuice 1c027bc148 Use UICommon's game list code on Android
Deduplicates code, and gets rid of some problems the old code had
(such as: bad performance when calling native functions, only one
disc showing up for multi-disc games, Wii banners being low-res,
unnecessarily much effort being needed for adding more metadata).
2018-06-06 17:34:07 +02:00
Lioncash 4288bfe0f9 Common: Move host communication enum to Host.h
Given this is actually a part of the Host interface, this should be
placed with it.

While we're at it, turn it into an enum class so that we don't dump its
contained values into the surrounding scope. We can also make
Host_Message take the enum type itself directly instead of taking a
general int value.

After this, it'll be trivial to divide out the rest of Common.h and
remove the header from the repository entirely
2018-05-28 14:34:59 -04:00
JosJuice cc42b4354d Reimplement custom PNG banners in game list
Fixes https://bugs.dolphin-emu.org/issues/10938
and makes PNG banners available in DolphinQt2 for the first time.
2018-05-20 15:34:03 +02:00
Tillmann Karras 4cfd900c67 Fix some warnings 2018-04-17 14:10:05 +01:00
JosJuice 3fe0051a53 Fix build error on Android
Caused by 4387432.
2018-04-03 08:32:55 +02:00
Léo Lam c82da2b978 Remove dead code
Unused, old code that is intended to be removed should not be left in
comments -- that is what version control is for.
2018-03-31 14:56:27 +02:00
JosJuice 4387432436 DiscIO: Don't use all uppercase for enum values
Also removing some prefixes that we don't need now that we're
using enum classes instead of plain enums.
2018-03-31 14:11:32 +02:00
Greg Wicks e19922c5de Android: Implement game-specific settings overrides UI 2018-02-16 13:47:52 -05:00
mahdihijazi c9dc585dcb Android: Support change disc 2018-01-21 13:59:36 +01:00
34will 10ea9e5f5b Added an actual implementation for yes/no dialogs on Android using Object.wait and Object.notify.
Modified NativeLibrary to display alerts in AlertDialogs rather than Toast notifications, and allow yes/no options.
Modified MainAndroid to use the new displayAlertMsg, and to return its output.
2018-01-10 13:41:57 +00:00
Markus Wick e705d43312
Merge pull request #6270 from mahdihijazi/suppport_restore_state
[Android] Support restore emulator state
2018-01-05 13:45:36 +01:00
JosJuice 82a6701f79 Optionally delete savestate that gets loaded at boot 2017-12-28 23:15:48 +01:00
JosJuice b921f6cdef MainAndroid: Don't set User directory redundantly 2017-12-28 13:34:49 +01:00
JosJuice f9a0511937 MainAndroid: Optionally wait for savestate to finish writing 2017-12-27 21:53:14 +01:00
JosJuice 87957faddd MainAndroid: Allow specifying savestate to load at boot 2017-12-27 21:53:13 +01:00
JosJuice a81cbf60fb MainAndroid: Add wrapper for Core::IsRunning 2017-12-27 21:53:13 +01:00
JosJuice d9dd210739 MainAndroid: Allow specifying path for savestates 2017-12-27 21:53:07 +01:00
JosJuice 3262314435 Android: Don't extract Sys if it already is extracted 2017-12-26 09:53:43 +01:00
JosJuice b3b7aef09a Android: Extract Sys to a different folder than the User folder 2017-12-26 09:53:32 +01:00
Mike Harris 4cab718065 Move emulation lifecycle handling into EmulationFragment.
The Activity is responsible for just its views and menus and such. It
signals the Fragment via setGamePath, StartEmulation and StopEmulation.

The Fragment manages the actual emulation lifecycle. It is solely
responsible for calling the NativeLibrary lifecycle methods.

With this lifecycle simplification, the NativeLibrary no longer needs to
kill the Activity. It happens normally now.

This simplifies a lot of things, live handling rotation.
2017-10-15 16:44:56 -07:00
Lioncash 696e1b40b5 Common: Move version strings to their own header
Ideally Common.h wouldn't be a header in the Common library, and instead be renamed to something else, like PlatformCompatibility.h or something, but even then, there's still some things in the header that don't really fall under that label

This moves the version strings out to their own version header that doesn't dump a bunch of other unrelated things into scope, like what Common.h was doing.

This also places them into the Common namespace, as opposed to letting them sit in the global namespace.
2017-09-09 19:28:10 -04:00
JosJuice f8703f90e3 MainAndroid: Remove s_filename
This fits better as a function parameter than as global state.
2017-08-23 22:36:21 +02:00
Michael M 737651f298 MsgHandler: small cleanup 2017-08-03 13:29:59 -07:00
Stenzek 1fccbd5be3 DolphinWX: Add a progress dialog host command
Allows feedback from backends to be communicated to the user when
long-running operation are performed (e.g. shader compilation).
2017-07-30 12:38:48 +10:00
Léo Lam ee868e2362 Move the Wiimote connect code out of Host
I don't know who thought it would be a good idea to put the Wiimote
connect code as part of the Host interface, and have that called
from both the UI code and the core. And then hack around it by having
"force connect" events whenever Host_ConnectWiimote is called
from the core...
2017-07-23 15:47:32 +08:00