Commit Graph

21742 Commits

Author SHA1 Message Date
shuffle2 951f6400fb Merge pull request #5706 from JosJuice/more-gamelist-speedup-followup
More follow-up for the gamelist speedup PR
2017-06-27 12:36:16 -07:00
JosJuice 7992c786b9 Fix references to CACHE_REVISION in DiscIO comments
The ISOFile.cpp one has been moved, and the GameFile.cpp one isn't
used for anything because DolphinQt2 doesn't support caching yet.
2017-06-27 21:32:14 +02:00
JosJuice a6471234a2 FileSearch: Use strcasecmp in non-std code
Because why should only Windows get in on the FileSearch speedup fun?
(Not that this fixes the slowness of File::ScanDirectoryTree...)
2017-06-27 21:32:07 +02:00
JosJuice caf6087766 GameListItem: Rename m_banner to m_volume_banner
I want to clarify that it isn't used for PNG banners.
2017-06-27 21:31:37 +02:00
JosJuice 89716025da GameListItem: Reduce levels of indentation 2017-06-27 21:29:56 +02:00
shuffle2 0ea17dafd9 Merge pull request #5710 from leoetlino/more-wiiroot-fixes
Remove unnecessary WiiRoot inits/shutdowns
2017-06-27 12:05:38 -07:00
shuffle2 d19e1ed4bf Merge pull request #5705 from JosJuice/strerror-r-version
Try to make sure that we have the XSI version of strerror_r
2017-06-27 11:49:26 -07:00
shuffle2 f1425a0c60 Merge pull request #5652 from spycrab/qt_audio
Qt/Settings: Implement Audio tab
2017-06-27 11:46:14 -07:00
shuffle2 9e1977e129 Merge pull request #5685 from spycrab/qt_dragndrop
Qt: Implement gamelist drag and drop
2017-06-27 11:44:06 -07:00
Léo Lam ff83b93949 Remove unnecessary WiiRoot inits/shutdowns
* IOS: WiiRoot shutdown was moved to HW.

* Movie: Don't call UpdateWantDeterminism() if we're not running yet,
  because this will automatically be done during the boot process.
  Not doing this will result in two NANDs being created.
2017-06-27 20:43:39 +02:00
shuffle2 ffe4135d77 Merge pull request #5708 from leoetlino/once
Initialise WiiRoot once per emulation session
2017-06-27 11:41:34 -07:00
shuffle2 2579a7c03d Merge pull request #5607 from leoetlino/logging-fix
Logging fixes
2017-06-27 11:40:26 -07:00
shuffle2 ce4d514542 Merge pull request #5631 from LAGonauta/openal-real-latency
Fixed latency setting and cleaned-up OpenAL backend
2017-06-27 11:31:16 -07:00
spycrab ba3df3db05 Qt/Settings: Implement audio pane 2017-06-27 20:25:38 +02:00
spycrab feb67a3953 Qt: Fix emulation not returning to its original state when aborting shutdown 2017-06-27 18:06:27 +02:00
spycrab 15243093c4 Qt: Implement missing settings 2017-06-27 17:32:43 +02:00
Léo Lam f5ef060b21 Initialise WiiRoot once per emulation session
This removes unnecessary initialisations which would cause issues in
determinism mode.
2017-06-27 15:44:17 +02:00
Léo Lam da5a7fcc63 IOS/ES: Fix content table handling
This is larger than I thought I would be, but unfortunately it's quite
hard to split fixes like this when the handling is wrong in tons of
different places.

The content table is limited in size. It can only hold 16 entries.
Three consequences:

* Since the table cannot grow indefinitely, instead of using a std::map
  we use a std::array as we should.

* Remove a hack where the CFD was cleared back to 0 on IPC close (wtf?)

* The CFD now doesn't keep increasing to infinity. It's unknown if this
  would fix anything at all, but some issues in the past were caused
  by CFDs being excessively large.

Other minor changes:

* Simplify save state logic.

* Keep track of the UID like ES does. Not sure how useful this is, but
  we can do this very easily so why not.

* Remove the guesswork and use the actual error codes.

* Add more error checking to make Dolphin less likely to crash.

Something that should be done in the future: deduplicate the filesystem
logic. Something that takes one line in the actual ES code takes
10+ lines in our implementation... while duplicating the FS logic...
This will likely harder to fix though, so I'm leaving that
for another time.
2017-06-27 15:37:00 +02:00
LAGonauta db7bb3bda8 Swapped C-style arrays to std::array
Also changed C-Style casts to static_cast
2017-06-27 07:12:15 -03:00
LAGonauta 9eb209c214 Removed redundant conversion to float when playing back stereo. 2017-06-27 07:10:32 -03:00
lfsafady 75af792070 Swapped out the sound_sync_event.Wait() call by a simple std::sleep_for.
It seems to make no difference besides allowing lower latencies and more
stability on hardware OpenAL cards. Maybe the Wait() call waits for too
long, causing buffers underruns.
2017-06-27 07:08:43 -03:00
lfsafady d9d51fe0c4 Renamed some variables to the current coding standard and some to better
fit what they really are.
2017-06-27 07:08:43 -03:00
JosJuice 5b7f99e57a Try to make sure that we have the XSI version of strerror_r 2017-06-27 11:59:39 +02:00
LAGonauta 8fd1af6783 Changed OpenAL latency setting to really reflect how much time it is.
Before these changes each value of latency were actually 5ms, with a
minimum latency of ~10 ms. If it was set to 4 ms on the UI, the actual
latency was 10 + 5 * 4 = 30 ms.
Now 30 ms on the UI means 30 ms on the backend.
2017-06-27 06:54:28 -03:00
JosJuice b9499441ee GameListItem: Fix comment about PNG banners for volumes
f16599f quietly dropped the ability to set custom banners for volumes.
2017-06-27 11:30:27 +02:00
JosJuice 691b676145 GameListItem: Fix minor naming style violation 2017-06-27 11:28:55 +02:00
JosJuice e73de25a9e GameListCtrl: Put CACHE_REVISION in .cpp file
Reduces the number of files that have to be recompiled
when changing the cache revision.
2017-06-27 11:27:36 +02:00
shuffle2 94ba78d717 Merge pull request #5614 from ligfx/qtinputmappingrandomcleanups
DolphinQt: small input mapping code cleanups and fixes
2017-06-27 01:57:26 -07:00
shuffle2 540ee18966 Merge pull request #5699 from JosJuice/wx-custom-titles
DolphinWX: Sync custom title changes on game list rescan
2017-06-27 01:48:22 -07:00
JosJuice 7d801d61dc DolphinWX: Use std::move when committing in GameListItem 2017-06-27 10:21:33 +02:00
spycrab 2a1d18444f Qt: Implement gamelist drag and drop 2017-06-27 10:18:15 +02:00
shuffle2 599a235a19 Merge pull request #5691 from ligfx/openalonlywindowsdynamic
OpenAL: only enable on Windows + dynamically load DLL
2017-06-27 01:18:06 -07:00
shuffle2 0f3ee2f209 Merge pull request #5700 from leoetlino/title-key
ESFormats: Minor changes
2017-06-27 01:02:42 -07:00
Michael Maltese 749889236d OpenALStream: remove commented-out ALC_REFRESH code 2017-06-27 00:06:14 -07:00
Michael Maltese 8e849b1595 Remove OpenAL DLL from Externals 2017-06-27 00:06:14 -07:00
Michael Maltese c882d52f4a OpenAL: load DLL dynamically 2017-06-27 00:06:14 -07:00
Michael Maltese 18e70cdf91 Only build OpenAL on Windows 2017-06-27 00:06:14 -07:00
Michael Maltese 42ea1c8ecf OpenAL: remove aldlist.cpp 2017-06-27 00:06:13 -07:00
Michael Maltese 32470ef284 clean up OpenALStream::Start() 2017-06-27 00:06:13 -07:00
Michael Maltese 56961f5561 OpenALStream: don't include headers if not building 2017-06-27 00:06:13 -07:00
Michael Maltese 033492717c BlockingLoop: fix unhandled enum value warning
Fixes compiler warning:

```
Source/Core/Common/BlockingLoop.h:212:13: warning: enumeration value 'kNonBlock' not handled in switch [-Wswitch]
    switch (mode)
            ^
```
2017-06-26 23:34:33 -07:00
JosJuice 0ac1562fbd DolphinWX: Load EmuState and custom name for actual discs 2017-06-27 08:29:57 +02:00
JosJuice d5bf6f1bbc DolphinWX: Sync custom title changes on game list rescan 2017-06-27 08:29:48 +02:00
Léo Lam 9f08534a47 IOS: Reuse IOSC instance when possible
Changes ESFormats to take an IOSC instance instead of creating its own
temporary instance unnecessarily.
2017-06-27 00:01:20 +02:00
Léo Lam 6d821de2b9 IOS: Use a std::array for the title key instead of vector
The title key is always 16 bytes, so it doesn't make sense to make it
a std::vector.
2017-06-27 00:01:20 +02:00
Michael Maltese b2c9d6d217 Rename CMixer to Mixer 2017-06-26 15:01:07 -07:00
Leo Lam aa020040f6 Merge pull request #5681 from spycrab/qt_safeshutdown
Qt: Implement safe shutdown
2017-06-26 21:55:27 +02:00
spycrab 6688e66c60 Qt: Implement safe shutdown 2017-06-26 21:47:32 +02:00
shuffle2 7d60f03acb Merge pull request #5687 from shuffle2/wx-cache
DolphinWX: properly sync EmuState and banner changes.
2017-06-26 12:40:40 -07:00
Shawn Hoffman f51df62344 DolphinWX: properly sync EmuState and banner changes. 2017-06-26 12:35:40 -07:00
Leo Lam 0ace7fd8f3 Merge pull request #5694 from leoetlino/dolphin-drm
Refuse to launch the shop with default credentials
2017-06-26 21:31:32 +02:00
Leo Lam f399ca984f Merge pull request #5692 from JosJuice/titledatabase-override
TitleDatabase: Let user files override sys files
2017-06-26 21:30:49 +02:00
shuffle2 02690d5d7c Merge pull request #5693 from JosJuice/filesearch-minor-changes
FileSearch: Minor changes
2017-06-26 11:44:44 -07:00
Léo Lam 70828916e6 IOS/ES: Refuse to launch the shop with default credentials
Prevents... misusing the shop.

We are not legally obliged to do this, but let's not make piracy
any easier.
2017-06-26 20:30:13 +02:00
spycrab 2de31317e9 UICommon: Move TriggerSTMPowerEvent() from Wx 2017-06-26 16:28:39 +02:00
Léo Lam 860f07f5a1 IOS/ES: Expose GetDeviceId 2017-06-26 15:18:01 +02:00
Léo Lam 60c6fbe9cc Add CommonTitles.h for common Wii title IDs 2017-06-26 15:17:55 +02:00
JosJuice 1fc5eae5bd FileSearch: Add a static_assert for the preferred separator 2017-06-26 11:50:10 +02:00
JosJuice 382356627a FileSearch: Check isDirectory in the non-Windows code
c5fa470 made the extension check discard directories, but
only in the new code that currently only is used on Windows.
Let's add an equivalent check in the old code so that the
behavior is consistent across platforms.
2017-06-26 11:44:23 +02:00
JosJuice 642e3db3c5 TitleDatabase: Add more information to a comment 2017-06-26 11:25:58 +02:00
JosJuice ee66c562ab TitleDatabase: Let user files override sys files
This seems like an oversight in the old code, because
what's the point of loading user files if the titles
in them are going to be ignored for nearly all games?

This commit fixes the issue by making the first LoadMap
variant not overwrite entries and making the constructor
do everything in the opposite order. An alternative solution
would be to make the second LoadMap variant overwrite entries.
2017-06-26 11:14:27 +02:00
Markus Wick 99b1735424 Merge pull request #5660 from shuffle2/unblock-blockingloop
Change "blocking" BlockingLoop::Stop to give up and die after a timeout.
2017-06-26 10:23:21 +02:00
Shawn Hoffman ed8f293b4f Change "blocking" BlockingLoop::Stop to give up and die after a timeout.
This fixes the global-static fifo object causing infinite hangs in some
cases. Notably, failure to initialize a graphics backend would result in
BlockingLoop::Prepare being called but never executing Run(), leaving the
object in a bad state.
2017-06-25 20:47:30 -07:00
Shawn Hoffman 1634f0cf5e Use CompareStringOrdinal in DoFileSearch instead of _wcsicmp 2017-06-25 16:47:46 -07:00
shuffle2 88b442e1a8 Merge pull request #5678 from shuffle2/win-qt-vcxproj
Windows/Qt: Make maintaining VS files easier.
2017-06-25 15:10:23 -07:00
JosJuice be162a3316 FileSearch: Remove unnecessary function 2017-06-25 13:21:25 +02:00
shuffle2 991062093b Merge pull request #5682 from MerryMage/SCMRevGen
SCMRevGen: Use DisableFastUpToDateCheck
2017-06-24 10:44:53 -07:00
MerryMage 11a03e7dd2 SCMRevGen: Use DisableFastUpToDateCheck 2017-06-24 17:34:21 +01:00
JosJuice b440dbd998 FileSystemGCWii: Use case insensitive comparison in FindFileInfo
This was a regression in f49b64c. Some games seem to name the
banner file OPENING.BNR instead of opening.bnr.

Should fix https://bugs.dolphin-emu.org/issues/10354
2017-06-24 14:06:31 +02:00
Shawn Hoffman 311740b587 msvc/qt: list missing headers 2017-06-24 01:52:49 -07:00
Shawn Hoffman 2cf4ce1785 msvc\qt: get rid of .filters; just display directory structure. 2017-06-24 01:52:49 -07:00
Tillmann Karras c8255092d7 Fix warnings 2017-06-24 01:41:58 +01:00
Shawn Hoffman a66b747366 DolphinWX: show simple message about scanning in statusbar. 2017-06-23 17:25:53 -07:00
Shawn Hoffman c5fa470ad8 replace DoFileSearch with optimized version 2017-06-23 17:25:53 -07:00
Shawn Hoffman f16599f4a8 DolphinWX: defer gamelist scanning and switch to single-file cache. 2017-06-23 17:25:53 -07:00
Shawn Hoffman 79961b6f76 GameListCtrl: minor cleanup 2017-06-23 17:25:53 -07:00
Shawn Hoffman 668c6b5ce9 DolphinWX: rename CGameListCtrl -> GameListCtrl 2017-06-23 17:25:52 -07:00
shuffle2 1bd177561b Merge pull request #5663 from leoetlino/import-fix
IOS/ES: Fix import sanity check
2017-06-23 17:04:26 -07:00
shuffle2 d715e740b5 Merge pull request #5669 from JosJuice/boottopause-false
Don't enable Boot to Pause by default in the debugger
2017-06-23 17:02:03 -07:00
sephiroth99 22e1a3c09f DolphinQt2: fix compile error with analytics disabled
Some ifdefs were missed around two lines related to analytics in
GeneralPane.
2017-06-23 19:09:45 -04:00
JosJuice 7ebd324fe7 Don't enable Boot to Pause by default in the debugger
This behavior is useful sometimes, but it's not always useful,
and it can be rather confusing if you're not aware of it.
2017-06-23 16:05:27 +02:00
Shawn Hoffman 38b61edaa5 Qt/Windows: Properly link against qtmain. 2017-06-23 00:46:13 -07:00
Léo Lam a3fdda1675 IOS/ES: Fix import sanity check
The sanity check runs *before* finalising the import, so at that time
the whole title directory is still in /import and not in /title.
This means we should check for contents there, not in /title. Whoops.
2017-06-22 23:41:01 +02:00
Niels Boehm 56158ca176 Replace MMU mask tests with dedicated function.
The efficient function (that is nearly the same as
https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2)
replaces one loop based instance (which also reused the xx variable
afterwards, whereas it should have used htabmask instead) and one
instance using the population count a.k.a. Hamming weigth.
2017-06-22 20:22:53 +02:00
Niels Boehm df82adca43 Add function testing whether a bitmask is valid.
This one verifies bitmasks where low bits are set to 1 (hence the name).
Any stray 0 among the lower ones or any stray 1 among the higher zeros
renders the mask invalid.

The edge cases of all zeros and all ones are considered valid masks.

It uses an efficient implementation. It's the counterpart of
https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2
2017-06-22 20:22:53 +02:00
shuffle2 e30484e8a7 Merge pull request #5653 from Starsam80/qt-remove-settings-warning
Qt: Remove the warning in the settings window
2017-06-21 20:24:31 -07:00
shuffle2 1c741adcc6 Merge pull request #5658 from leoetlino/async
WX: Use std::future for checking disc integrity
2017-06-21 20:22:02 -07:00
shuffle2 09edd62cce Merge pull request #5650 from leoetlino/check-contents
IOS/ES: Add some sanity checks to ImportTitleDone
2017-06-21 20:13:44 -07:00
shuffle2 f65fe3efbd Merge pull request #5646 from Starsam80/cert-import-fixes
NANDImporter: Improve certificate extraction
2017-06-21 20:12:57 -07:00
Léo Lam 9d70b894bf WX: Use std::future for checking disc integrity
Simpler, and puts the call to CheckIntegrity right where it should be,
instead of being hidden somewhere in a thread class.

This also makes it more obvious what we're getting from the async task.

Oh, and coincidentally, this fixes a random crash that could occur
during the check. I'm not sure why.
2017-06-21 11:08:07 +02:00
Tillmann Karras e504da6f04 DSPHLE: add a few comments 2017-06-21 07:07:10 +01:00
Tillmann Karras b2a3827ecb DSPHLE: fix volume in NTSC IPL ucode 2017-06-21 06:57:58 +01:00
Starsam80 74df52fb2c
Qt: Remove the warning in the settings window 2017-06-20 18:58:47 -06:00
Tillmann Karras 578ae3c8a1 DSPHLE: the light protocol has no sine table
The sine table is only used for Dolby mixing which the light protocol
doesn't support.
2017-06-20 22:00:27 +01:00
Tillmann Karras a46430851d DSPHLE: the IPL PAL ucode's 0xC command is a nop 2017-06-20 22:00:27 +01:00
Tillmann Karras 69027bc488 DSPHLE: add another Japanese IPL checksum
I'm not actually sure it's version 1.2 but it doesn't really matter
anyway.
2017-06-20 22:00:11 +01:00
Leo Lam 3fe8e102fc Merge pull request #5648 from leoetlino/qt-shutdown
Qt: Fix emulation stopped signal
2017-06-20 21:14:13 +02:00
Léo Lam 3613f33c9b IOS/ES: Make sure all contents are imported
This adds a check to ImportTitleDone to make sure all required contents
that are listed in the TMD have been imported before allowing to finish
the import. Not checking for this could allow titles to be left in an
inconsistent state.
2017-06-20 20:12:50 +02:00
Léo Lam 4d08e90f26 IOS/ES: Block ImportTitleDone if there's a content import 2017-06-20 11:57:00 +02:00
Anthony b584d2797f Merge pull request #5508 from ligfx/qtresizerenderwidget
DolphinQt2: allow resizing RenderWidget/fix fullscreen
2017-06-19 12:26:18 -07:00
Léo Lam fb135c99e3 Qt: Fix emulation stopped signal
Same old bug as in WX. The core is not shut down until the on stopped
callback is invoked.
2017-06-19 21:24:32 +02:00
shuffle2 74cab88a8c Merge pull request #5618 from lioncash/fifo
FifoRecorder: Don't allocate ~100.7MB on program startup
2017-06-19 08:02:51 -07:00
Leo Lam 1be10e7ebc Merge pull request #4940 from sjnewbury/wiimote-connect
Retry opening of wiimote channels on initial failure
2017-06-19 10:56:09 +02:00
Steven Newbury e9a696b160 Retry opening of wiimote channels on initial failure #5997
There seems to be a race condition between a peripheral device
connecting to the bluetooth controller and it being ready to use.
It's very short and it depends upon the controller, some appear to
connect synchronously and block until the device is ready, others
report the device upon discovery but do not allow communication straight
away. I don't know which is the correct behaviour, or whether it depends
on the peripheral, controller or both. Anyway, Dolphin waits for a
remote to appear and immediately attempts to open the communication
channels, this can fail because the device isn't ready yet, delay, try
again, and it works.

There are other (unlikely) chances the device is busy at random
moments after this initial race condition so it loops around try to
reconnect.

This was inspired by an earlier patch, see here:
https://bugs.dolphin-emu.org/issues/5997#note-20

I can confirm that it works perfectly for me on a bluetooth
controller where otherwise it's impossible to connect (Dell 380
Bluetooth 4.0).
2017-06-19 09:22:04 +01:00
Starsam80 5399311a13
NANDImporter: Improve certificate extraction 2017-06-19 01:23:58 -06:00
Lioncash 82c66e2bab FifoRecorder: Don't allocate ~100.7MB on program startup
So, a FifoRecorder instance is instantiated as a file-local variable and
used as a singleton (ugh). Most users likely don't regularly use the
FIFO player/FIFO recorder, so this is kind of a substantial waste of
memory.

FifoRecorder's internal RAM and ExRAM vectors are 33554432 and 67108864
bytes respectively, which is around 100.66MB in total.

Just on the game list view on a clean build with nothing loaded, this
knocks debug build memory usage down from ~232.4MB to ~137.5MB, and
release build memory usage down from ~101MB to ~5.7MB.
2017-06-19 02:47:26 -04:00
Lioncash 59a947d41d AbstractTexture: Return config by const reference
Returning by const value isn't really necessary (and usually an indicator const reference was intended).
2017-06-18 23:38:42 -04:00
Lioncash 07cddf6f7f AbstractTexture: Add missing includes (and remove unnecessary ones) 2017-06-18 23:29:22 -04:00
Lioncash 0c57543205 VideoCommon: Fix VS filter for AbstractTexture.cpp
This would cause failures when building with VS.
2017-06-18 22:58:02 -04:00
shuffle2 f06e233d49 Merge pull request #5616 from ligfx/qtfocuseventtowindowactivation
DolphinQt2: FocusEventFilter -> WindowActivationEventFilter
2017-06-18 16:34:03 -07:00
shuffle2 b59eb76786 Merge pull request #5641 from leoetlino/analytics-timeout
Analytics: Set the timeout to 5 seconds
2017-06-18 16:33:18 -07:00
Michael Maltese f7e2b8dab7 DSPCore: replace 'GC' with 'GameCube' in messages 2017-06-18 15:43:02 -07:00
Michael Maltese 9de2934aae DSPCore: remove message that the free ROM doesn't work with IPL
The GameCube IPL sounds the same when using the free ROM as it does when
using the official ROM (and in Audacity, I couldn't visually distinguish
between the waveforms). It has a reference to an unimplemented function
at 0x8644 which seems to only be used in an inlined version of the CARD
ucode.
2017-06-18 15:43:02 -07:00
Michael Maltese 84808d2e35 DSPCore: update free DSP ROM message for GBA ucode support
The GBA ucode is supported as of #5524 / d51be94.
2017-06-18 15:43:02 -07:00
shuffle2 98b751f810 Merge pull request #5643 from leoetlino/fix-memcpy
IOS/ES: Fix bug in ImportTicket ioctlv handler
2017-06-18 15:37:08 -07:00
Léo Lam 29e8988c90 Analytics: Set the timeout to 5 seconds
3 seconds is sometimes not enough.
2017-06-18 23:16:03 +02:00
Leo Lam 9a1503a75c Merge pull request #5642 from lioncash/chrono
HttpRequest: Use std::chrono for indicating time periods
2017-06-18 23:13:52 +02:00
Léo Lam 961c85bf7c IOS/ES: Fix bug in ImportTicket ioctlv handler 2017-06-18 23:09:30 +02:00
Léo Lam 7222ce78ff SysConf: Don't set "config done" flags by default
This allows the user to go through the Wii Menu first boot setup
screen when they launch the System Menu for the first time.

Most useful on a clean profile, after doing a full system update,
to configure settings like the console country.
2017-06-18 22:32:56 +02:00
shuffle2 5072f4e5c3 Merge pull request #5638 from leoetlino/sysconf
Rewrite SysConf handling
2017-06-18 13:19:11 -07:00
shuffle2 72d5dd754a Merge pull request #5639 from leoetlino/unit-test-profile
UnitTests: Use a temporary profile directory
2017-06-18 12:57:57 -07:00
shuffle2 e63c337830 Merge pull request #5305 from iwubcode/abstract_texture
Abstract Texture
2017-06-18 12:57:05 -07:00
Lioncash 251de89b5c HttpRequest: Use std::chrono for indicating time periods
Allows the use of chrono time points, on top of being more indicative of
time periods used at call sites, if custom timeouts are specified.
2017-06-18 15:48:37 -04:00
Léo Lam 5243eae4e9 UnitTests: Use a temporary profile directory
This prevents Dolphin from modifying any file in the user directory.
2017-06-18 16:23:09 +02:00
Léo Lam d86f020e81 Rewrite SysConf handling
This rewrites the SysConf code for several reasons:

* Modernising the SysConf class. The naming was entirely cleaned up.
  constexpr for constants.

* Exposing less stuff in the header.

* Probably less efficient parsing and writing logic, but much simpler
  to understand and use in my opinion. No more hardcoded offsets.
  No more duplicated code for the initial SYSCONF generation.

* More flexibility. It is now possible to add and remove entries,
  since we rebuild the file. This allows us to stop spamming
  "section not found" panic alerts; we can now use and insert
  default entries.
2017-06-18 16:17:05 +02:00
Tillmann Karras 9a2bef97da JitCache: use SymbolDB names as JIT block names 2017-06-18 06:58:44 +01:00
shuffle2 e9c0535519 Merge pull request #5632 from sepalani/file
File/IOFile: Check _tfopen_s properly
2017-06-17 15:03:10 -07:00
Léo Lam e1990e2645 IOS/ES: Fix title ordering
On a real Wii, the title list is not in any particular order. However,
because of how the flash filesystem works, titles such as 1-2 are
*never* in the first position. We must keep this behaviour, or some
versions of the System Menu may break.
2017-06-17 22:39:08 +02:00
Léo Lam dd8dcdf880 LogManager: Check if listener is valid before using it 2017-06-17 10:39:06 +02:00
Léo Lam a2ad3e14d0 Logging: Remove duplicated code 2017-06-17 10:20:30 +02:00
Léo Lam 100c433261 Logging: Move verbosity setting code to LogManager
No clue why it was in DolphinWX.
2017-06-17 10:20:30 +02:00
Stenzek 68fef47aef Merge pull request #5314 from stenzek/revert-efb-source-truncation
TextureConversionShader: Use integer math for truncating EFB format
2017-06-17 15:21:48 +10:00
Stenzek adebe2239e TextureConversionShader: Use integer math for truncating EFB format 2017-06-17 12:17:09 +10:00
Sepalani b359d82890 File/IOFile: Check _tfopen_s properly 2017-06-17 02:16:58 +01:00
Leo Lam 10beb2aea1 Merge pull request #5628 from JosJuice/updatetitle-encoding
DolphinWX: Fix encoding errors in UpdateTitle
2017-06-16 18:37:59 +02:00
Leo Lam bc9c9b9fe4 Merge pull request #5594 from MerryMage/phack
Cleanup Projection Hack
2017-06-16 18:36:39 +02:00
Leo Lam cc9bd0b0f0 Merge pull request #5625 from leoetlino/fileutil-fixes
FileUtil fixes
2017-06-16 18:31:50 +02:00
JosJuice 4bee7b7605 DolphinWX: Fix encoding errors in UpdateTitle
An implicit conversion from std::string to wxString
was to blame, as usual. Fixes issue 10341.
2017-06-16 17:20:13 +02:00
Léo Lam 6249244c90 IOS/ES: Fix formatting 2017-06-16 16:17:38 +02:00
Léo Lam 6503a9f538 Allow the user to ignore signature issues during WAD import
Improves usability with signature checks.
2017-06-16 16:17:38 +02:00
Léo Lam c08806d107 IOS/ES: Verify containers in GetTMDStoredContents 2017-06-16 16:17:38 +02:00
Léo Lam d77b7ac90e IOS/ES: Verify containers in SetUpStreamKey 2017-06-16 16:17:38 +02:00
Léo Lam 36c5caacf4 IOS/ES: Verify containers in ImportTmd 2017-06-16 16:17:37 +02:00
Léo Lam 54025da00f IOS/ES: Add note about verification in DiVerify
We probably don't want to verify containers there because it might
result in patched/custom games failing the check.
2017-06-16 16:17:37 +02:00
Léo Lam 8a49e1f7db IOS/ES: Verify containers in ImportTitleInit 2017-06-16 16:17:37 +02:00
Léo Lam 719af1aff4 IOS/ES: Verify containers in ImportTicket 2017-06-16 16:17:37 +02:00
Léo Lam 07d83ada39 IOS/ES: Create missing directories at boot
Something that IOS does and that Dolphin doesn't, for whatever reason.
2017-06-16 16:17:37 +02:00
Léo Lam f3bf1d626c IOS/ES: Add helper function ReadCertStore 2017-06-16 16:17:37 +02:00
Léo Lam 88348e2903 IOS/ES: Add VerifyContainer
Will be used from several functions to verify the signatures for
different containers (TMDs, tickets, device signed blobs).

An option was added to disable signature checks, because that could be
useful for people trying to import unsigned stuff.
2017-06-16 16:17:37 +02:00
Léo Lam 34c9bf391e IOS: Correct ES return code names about signatures
-1027 is used when ES cannot find the issuer of a certificate.

-1012 is used when the signature type is invalid.
2017-06-16 15:49:40 +02:00
Shawn Hoffman 1ada68aecd windows: fix handle leak when using continuous scan 2017-06-16 04:00:32 -07:00
Léo Lam 01faa5c852 FileUtil: Use errno for printing errors in IsDirectory
stat() returns an error code in errno on both POSIX compliant
platforms and Windows.

This means we should always use errno instead of GetLastErrorMsg
which uses GetLastError() (Win32) on Windows.
2017-06-16 12:43:41 +02:00
Léo Lam aa63199977 FileUtil: Don't manually strip trailing slashes
POSIX allows one or more trailing slashes for directories.

From POSIX.1-2008, section 3.271 (Base Definitions / Pathname):

> A pathname can optionally contain one or more trailing <slash>
> characters. Multiple successive <slash> characters are considered to
> be the same as one <slash>, except for the case of exactly two
> leading <slash> characters.

On Windows, the extra trailing slashes are ignored for directories too.
2017-06-16 12:31:26 +02:00
Leo Lam 405d2e28ad Merge pull request #5621 from Orphis/d3d_include
d3d: Add missing include
2017-06-16 10:53:56 +02:00
Shawn Hoffman f469d86467 cmake/win32: add CompatPatches 2017-06-15 21:26:40 -07:00
Shawn Hoffman 1210c74955 [windows]: Apply compatibility patches to problematic gamepad vibration drivers.
Move ucrtFreadWorkaround to use the new LdrWatcher.
2017-06-15 21:21:01 -07:00
Florent Castelli 0b504fa046 d3d: Add missing include 2017-06-16 05:52:01 +02:00
Shawn Hoffman e51071a9c5 msbuild: put pugixml in Externals solution filter; fix project reference. 2017-06-15 19:06:16 -07:00
Michael Maltese 7c79673d78 MappingButton: make m_block a Common::Flag 2017-06-15 16:15:07 -07:00
Michael Maltese 5b6c8c3ad0 MappingButton: grab and release mouse and keyboard instead of calling parent SetBlockInputs 2017-06-15 16:15:07 -07:00
Michael Maltese 2188ac785a Move MappingWindow::OnDefaultFieldsPressed() to correct file 2017-06-15 16:15:07 -07:00
Michael Maltese 6c73079011 MappingWidget: fix typo and call Update() on bools 2017-06-15 16:15:07 -07:00
Michael Maltese ef563fc032 MappingWidget: call Clear() on numerics and bools 2017-06-15 16:15:07 -07:00
Michael Maltese 94038a1e03 MappingButton: remove GetFirstButtonPress logic 2017-06-15 16:15:07 -07:00
Michael Maltese 5b3b6b7f3d DolphinQt2: FocusEventFilter -> WindowActivationEventFilter 2017-06-15 16:12:05 -07:00
Lioncash dd4203bec8 Core: Remove unnecessary includes
Also moves a cpp file's related header file to the top of the inclusions if it isn't already there.
2017-06-15 18:52:22 -04:00
Lioncash b003108b8b Core: Add WiimoteCommon headers to the VS project 2017-06-15 18:38:21 -04:00
Leo Lam 8f460a1cda Merge pull request #5611 from JosJuice/reorganize-file-namespace
Reorganize File namespace
2017-06-15 23:28:36 +02:00
JosJuice cf94ce6305 Add a namespace to OpenFStream
For consistency with the other functions in FileUtil.h.
2017-06-15 21:34:04 +02:00
JosJuice f09ceaa735 Move IOFile to a separate file
Reduces the number of files that need to be recompiled
when making changes to FileUtil.h.
2017-06-15 21:33:50 +02:00
Leo Lam 9bc1b652fe Merge pull request #5601 from leoetlino/esformats-additions
ESFormats additions and fixes
2017-06-15 21:32:44 +02:00
Leo Lam 743284d39d Merge pull request #5606 from leoetlino/include
NoGUI: Fix a missing include for Xlib
2017-06-15 21:31:21 +02:00
Leo Lam 09c0a3caaf Merge pull request #2820 from JosJuice/filesystem
Filesystem redesign and performance improvements
2017-06-15 21:24:42 +02:00
MerryMage f8a99ca192 VertexShaderManager: Rename projection hack variables 2017-06-15 16:38:10 +01:00
MerryMage 44f2420517 GraphicsSettings: PH_ZNear and PH_ZFar are std::strings 2017-06-15 16:38:06 +01:00
Léo Lam a370ad5f6d IOS/ESFormats: Fix content map writing
On Windows, this would fail because the file handle wasn't closed.
2017-06-14 23:13:46 +02:00
Léo Lam 8865208571 IOS/ESFormats: Add ParseCertChain
This will be used to avoid duplicating cert chain parsing code.
2017-06-14 22:45:30 +02:00
Léo Lam e29f6e383f IOS/ESFormats: Add CertReader 2017-06-14 22:45:30 +02:00
Léo Lam 90280b3f84 IOS/ESFormats: Remove unused TMDReader function
The ES function that used to make use of it was changed to be more
sane, so GetRawHeader() is now unused and useless.
2017-06-14 22:45:29 +02:00
Léo Lam 6c3069be97 IOS/ESFormats: Use SignedBlobReader for TMDs and tickets 2017-06-14 22:45:29 +02:00
Léo Lam 2ec04675c9 IOS/ESFormats: Add SignedBlobReader
Allows common signature parsing code to not be duplicated.
2017-06-14 22:45:29 +02:00
Anthony 335f54cac6 Merge pull request #5609 from leoetlino/qt-user-path
Qt: Support custom user profile paths
2017-06-14 13:40:37 -07:00
JosJuice 583406d900 Filesystem: Make destructors = default 2017-06-14 15:26:04 +02:00
JosJuice 0b7d2e7c68 Filesystem: Modernize variable names 2017-06-14 15:25:09 +02:00
JosJuice e3a2cd827a Filesystem: Do more validity checking in the constructor
This makes it possible to catch errors earlier so that file systems
simply fail to load instead of behaving oddly. It also makes it possible
to check for errors that weren't checkable before, like the end of a
directory being after the end of the parent directory.
2017-06-14 15:25:05 +02:00
JosJuice ee27be06d7 Filesystem: Add a cache for finding file info by disc offset
FileMonitor calls this every time a read happens, and there's no code that
only calls this a small number of times, so having a cache is worthwhile.
2017-06-14 15:25:02 +02:00
JosJuice 87916fe099 Filesystem: Replace GetFileList()
Instead of expecting callers to know how the size of directory file infos
relates to which files are in which directories, filesystems now offer a
GetRoot() method, and file infos offer a way to get their children. As
a bonus, m_FileInfoVector no longer has to be created and kept around
in RAM. Only the file info objects that actually are used are created.
2017-06-14 15:23:48 +02:00
Léo Lam a9630727fe Qt: Support custom user profile paths
Pretty much the most important option to support, even for a UI
frontend that's still a WIP. It's essential for testing.
2017-06-14 14:31:30 +02:00
Leo Lam 40a9e585a7 Merge pull request #5604 from sepalani/wx-rm-path
PathConfigPane: Prevent an invalid index assert
2017-06-14 13:30:15 +02:00
Sepalani 2a349f8e49 PathConfigPane: Prevent an invalid index assert 2017-06-14 12:07:25 +01:00
Leo Lam c71cb9ac49 Merge pull request #5608 from Starsam80/qt-should-be-like-wx
Qt/MappingWindow: Update layout to match WX
2017-06-14 11:14:34 +02:00
Leo Lam 54e882941c Merge pull request #5600 from leoetlino/xml-library
Externals: Add zeux/pugixml@38edf25
2017-06-14 11:13:32 +02:00
Leo Lam 36efcc9f39 Merge pull request #5599 from leoetlino/http-request
Common: Add HttpRequest to simplify HTTP requests
2017-06-14 11:12:56 +02:00
Starsam80 e023cc124b
Qt/MappingWindow: Update layout to match WX 2017-06-13 22:42:53 -06:00
JosJuice ee2b88ebb6 Filesystem: Store pointer to beginning of FST in file infos
Needed for the next commit.
2017-06-13 22:44:15 +02:00
JosJuice 1262f08ac1 Filesystem: Better validity checking
Now that the FST in read in the constructor, m_Valid
can be set to false when there are errors in the FST.
2017-06-13 22:44:11 +02:00
JosJuice afe2bc60f6 Filesystem: Initialize everything in constructor
Not initializing until the filesystem is used is good when
a filesystem is constructed and then never used, but nobody does that.
This simplifies the code a little and lets all methods be const.
2017-06-13 22:44:07 +02:00
JosJuice d6ee7ec32c Filesystem: Read the entire FST in one go
Instead of using lots of small scattered reads to read the FST,
only one big read is used, which is more efficient.

This also means that the FST only allocates memory once and stores all
strings close to each other - good for the CPU cache. The file info
objects use pointers to this FST memory of containing data themselves.
Keeping around the big m_FileInfoVector containing objects with only
pointers is a bit unnecessary, but that will be fixed soon.
2017-06-13 22:43:41 +02:00
JosJuice f49b64caff Filesystem: Rewrite finding file info by path for performance
Instead of calling GetPathFromFSTOffset for every file info, FindFileInfo
now only looks at names in directories that are included in the path.
For the common case of searching for "opening.bnr", this means that
only root-level files and directories have to be searched through.
2017-06-13 22:41:02 +02:00
JosJuice 7c45afecb2 Filesystem: Use file info in arguments instead of path
Some callers already have the file info, making the relatively slow
FindFileInfo calls unnecessary. Callers that didn't have the file info
will now need to call FindFileInfo on their own.
2017-06-13 22:40:57 +02:00