Commit Graph

3647 Commits

Author SHA1 Message Date
Gregory Hainaut a7a8c542f5 Merge pull request #1100 from PCSX2/recompiler-abi-wrapper
Recompiler abi wrapper
2016-01-14 19:21:27 +01:00
Gregory Hainaut d4b30620a7 pcsx2: avoid a segmentation fault due to previous hack 2016-01-12 19:35:23 +01:00
Gregory Hainaut 46a2f6ed24 interpreter: fix a subtle bug in a QFSRV
Math is correct but a shift of 64 bits is illegal in x86 because the cl register is masked

From the x86 spec:
    The destination operand can be a register or a memory location. The count operand can be an immediate value or
    the CL register. The count is masked to 5 bits (or 6 bits if in 64-bit mode and REX.W is used). The count range is
    limited to 0 to 31 (or 63 if 64-bit mode and REX.W is used). A special opcode encoding is provided for a count of 1.
2016-01-12 19:29:10 +01:00
refractionpcsx2 22de865582 Gamefix: Add Scarface - The World is Yours Gamefix, might help other games that do constant VU recompilation. 2016-01-11 23:32:33 +00:00
Gregory Hainaut 812a2e4850 recVtlb: Align dispatcher to 32B boundary
Better for cache coherency
2016-01-11 18:00:19 +01:00
Gregory Hainaut e3d5eb5a4e core: convert xCALL to xFastCall
SuperVU wasn't converted (unlikely to be ported to 64 bits)
A couple of calls weren't converted because they require extra work
but there are not mandatory (debug/MTVU/...)
2016-01-11 09:21:45 +01:00
Gregory Hainaut 859d62d2a7 ee|iop: use xScopedStackFrame to handle dynarec frame
* Rework a bit MVU to support xScopedStackFrame. Potentially
stack frame can be optimized (save 5 instructions)

* I removed the recompiler stack check. Address sanitizer is more efficient anyway
2016-01-11 09:21:45 +01:00
Gregory Hainaut a6eb871b42 pcsx2: use a common general intrin include
Avoid issue with various compiler conversion
Fix build with GCC4.8
2016-01-11 09:13:52 +01:00
Gregory Hainaut 52b4604d3b iop: remove unused iPsxMem.cpp file 2016-01-10 18:41:18 +01:00
Gregory Hainaut 41d13dc2c6 vtlb: remove SetBaseAddr
Base address is given in the constructor
2016-01-10 14:31:49 +01:00
Gregory Hainaut 1c4b430984 profiler: plug recompiler with new perf infra
Only EE/IOP support by block profiling

v2: cast wxString with ToUTF8 (windows)
2016-01-10 13:43:08 +01:00
Gregory Hainaut e75d3f759f ee:profiler: add instructions counters 2016-01-09 23:29:03 +01:00
Gregory Hainaut 5b08bda5b8 ee:profiler: count EE memory access 2016-01-09 23:29:03 +01:00
Gregory Hainaut 0e1188565e ee:profiler: count EE instruction execution
Based on microVU_Profiler.h

It remains to emit all the opcode to use it properly
2016-01-09 23:29:03 +01:00
Gregory Hainaut c80037bb2f debug: add a new function to dump EE block
Give both EE and x86 code.

Don't rely on global variable. The dump still dump the content of the register.
Of course value will be wrong if you don't dump it at the start of the block.
It help to detect register/memory access

the cpu struct address is also printed to easily postprocess the x86 memory pointer
(see next commit)
2016-01-09 22:59:31 +01:00
Gregory Hainaut 5c0c9a60e9 core: use ecx directly 2016-01-09 21:26:25 +01:00
Gregory Hainaut 834cc3f2c5 core|x86emitter: port basic jump instruction 2016-01-09 21:26:25 +01:00
Gregory Hainaut b09295fc7c core: use xRegister32 for _allocX86reg 2016-01-09 21:26:25 +01:00
Gregory Hainaut 4ddc4778e4 ee: use xRegister32 for 1st argument of _psxMoveGPRtoR 2016-01-09 21:26:25 +01:00
Gregory Hainaut 3570467838 core: inline LogicalOp* functions 2016-01-09 21:26:25 +01:00
Gregory Hainaut 9b7b9bc407 fix compilation issue due to bad renaming
:(
2016-01-09 21:26:25 +01:00
Gregory Hainaut 9eb73e1ef0 core: rely on register.GetId() instead of define 2016-01-09 21:15:46 +01:00
Gregory Hainaut 743e615224 core: overload _freeX86reg with xRegister32 2016-01-09 21:15:25 +01:00
Gregory Hainaut 6291910b02 ee: use xRegister32 for 1st argument of _eeMoveGPRtoR 2016-01-09 21:15:12 +01:00
Gregory Hainaut 8737db97e7 core: remove allocation error check
1/ Allocation can't fail anymore
2/ Avoid to convert it to new register syntax
2016-01-09 21:14:05 +01:00
Gregory Hainaut fcdbae6806 core: massively sed old emitter syntax to the new one
It misses jump & FPU. Jump need to be handled manually.

Syntax isn't perfect yet because of various casts. But it will allow to have a
single emitter syntax and rely on type safety on the future.

Conflicts:
	pcsx2/x86/iR3000Atables.cpp
	pcsx2/x86/ix86-32/iR5900-32.cpp
2016-01-09 20:56:07 +01:00
Gregory Hainaut bd1d3724c1 core: manually convert few functions to new emitter
Remaining part will be done by a sed scripts
2016-01-09 20:39:32 +01:00
Gregory Hainaut a9a26b93f9 ee: directly call EMMS from dispatcher
Until we completely remove MMX from the recompiler
2016-01-09 19:57:28 +01:00
Gregory Hainaut c121bccb03 pcsx2: delete old asm file 2016-01-09 18:45:34 +01:00
Gregory Hainaut 39b77c6fd3 cmake: remove unused asm file
Code was ported (inlined asm/recompiler)
2016-01-09 15:48:58 +01:00
Gregory Hainaut 74db92bee4 Merge pull request #978 from juhalaukkanen/apple_osx_master_merge
OSX 32bit build
2016-01-08 20:09:37 +01:00
Gregory Hainaut 4f28403c03 Merge pull request #972 from PCSX2/clean-gcc-opt-cmake
cmake: reenable a couple of missing gcc optimization
2016-01-08 19:32:18 +01:00
Gregory Hainaut 963be27b75 Merge pull request #1057 from ssakash/videmode_changes
EE SYSCALL: Add missing video modes at SYSCALL 2
2016-01-08 19:31:48 +01:00
Gregory Hainaut 58ba6789cc Bump version number
It's still time to switch to the new stable release before massive breakage ;)
2016-01-08 19:04:49 +01:00
Avi Halachmi (:avih) 165d2860e4 about dialog: add Devina 2016-01-05 06:30:26 +02:00
Avi Halachmi (:avih) d770a048aa GS window title: remove redundant ${pause} from commit 4626e489 2016-01-04 15:53:53 +02:00
Avi Halachmi (:avih) 4626e48980 GS window title: add <PAUSED> when paused
Mostly relevant if the GS window is set to not hide while paused, but also shows
when the emulation is paused due to plugin config etc.

The string <PAUSED> is configurable via the template at PCSX2_ui.ini (including
making it empty) but currently it always appear at the begining of the title.
2016-01-03 22:14:30 +02:00
Avi Halachmi (:avih) e8b653ddf3 KB commands: change Sys_Suspend to Sys_SuspendResume (toggle)
It's now possible to press ESC once to pause, and ESC again to resume (or assign
any other key via PCSX2_keys.ini, e.g. to SPACE).

Note that resume only works if the GS window is NOT set to hide on pause (Emu
options -> GS Window), and if the key is pressed while the GS window is focused.

This includes two related changes:
- The command name at PCSX2_keys.ini is now changed to Sys_SuspendResume.
- If the GS window is NOT set to hide on pause, then it stays focused on pause.

--nogui also gains this behavior, so it's now possible to launch without a GUI
and still suspend/resume if the GS window is not set to hide on pause. If it is
set to hide on pause, then the behavior remains as it was: exit PCSX2 on pause,
or prompt to exit/resume if --noguiprompt is provided.
2016-01-03 22:13:14 +02:00
Avi Halachmi (:avih) 6300a47c15 GS window: improve keys/commands handling when paused
Only relevant if the GS window is set to NOT hide when paused. At this case
there were two issues on Windows:
- Commands were invoked twice.
- Non-special-keys (e.g. plain 'q') were not handled at all.

Not terribly important now, but it prepares for the next commit.
Also rename a function to have a more meaningful name.
2016-01-03 22:13:14 +02:00
Kingcom c6b60d5376 Fix mouse position calculation 2016-01-02 22:02:33 +01:00
Kingcom a3dea9b243 Optimize register list drawing 2016-01-02 22:02:33 +01:00
Kingcom cbd7aed0f3 Make register list scrollable 2015-12-30 20:12:19 +01:00
Kingcom 80db2abe3d Fix debugger crash after using shutdown. Fixes #1074 2015-12-30 19:22:11 +01:00
Kingcom de1f3d0df7 Remember size of debugger window 2015-12-30 19:22:11 +01:00
Kingcom be0ad9be2f Scale the font size in debugger controls with DPI 2015-12-30 19:22:11 +01:00
Kingcom 1fe15c16cc Use alternating background colors in the register list 2015-12-30 19:22:10 +01:00
Kingcom 11bcb328f8 Revert to old register list 2015-12-30 19:22:10 +01:00
ramapcsx2 df0dd10c9f about box changes 2015-12-29 17:47:10 +01:00
Kingcom 4c36c12fb1 Fix IOP bltzal and bgezal opcodes 2015-12-28 10:05:26 +01:00
Andrew Church b66cd84b9a Fix build error with wxWidgets 2.8.
Regression introduced in 81891ac1097f28fc97c0bd4226b0b72394c2ef69;
assigning "" to a wxString results in an ambiguity error when building
with wxWidgets 2.8 (this could well be a bug in wxWidgets).  The default
wxString constructor creates an empty string anyway, so these assignments
are unnecessary.
2015-12-26 10:57:48 +09:00
Akash 6dda879e63 EE-Syscall: Add missing modes 2015-12-24 13:30:25 +05:30
Gregory Hainaut 81891ac109 pcsx2:cli: support the elf option properly 2015-12-22 16:34:58 +01:00
ramapcsx2 9170d2902c shuffle some names in about dialog 2015-12-20 13:20:53 +01:00
ramapcsx2 c73f87ac71 Merge pull request #1046 from ssakash/GSDX_mode
PCSX2: Fix up Video mode detection on GS Frame
2015-12-20 13:05:12 +01:00
ramapcsx2 58aaea6277 Better MTVU thread cancel 2015-12-19 12:22:15 +01:00
ramapcsx2 1111e03901 Finally nailed the MTVU zombie processes bug. Thanks a lot for the tip,
@turtleli! Well, at least we hope it's gone for good now ;)
2015-12-17 23:19:11 +01:00
Akash 0f1fec40cf GSFrame: Fix up video mode detection.
Previously Interlaced (Field) was displayed as Progressive which was wrong since the tested games didn't even support Progressive mode and it misleaded most of the users so let's just display Interlaced during Field mode.
2015-12-17 19:51:33 +05:30
Avi Halachmi (:avih) 3820bf16fd GUI: presets: don't gray-out static text when presets are disabled
The EE/IOP and VUs panels were disabled completely when presets are enabled,
which apparently also means disabling (graying out) the static texts, however,
re-enabling them (when disabling presets) didn't un-gray-out the static text.

This is likely a wxWidgets bug, but we can avoid it by just enabling/disabling
all items explicitly (and keeping the panels themselves always enabled).

For these panels, this means adding explicit enable/disable of the he EE-cache
checkbox and the Restore-Defaults buttons.

The issue doesn't seem to happen on other panels (though some earlier revisions
apparently also had this issue for the static text at the game fixes panel, but
apparently it's not an issue now).
2015-12-17 06:59:33 +02:00
ramapcsx2 c8a7a709dc bring vsyncinfocalc up to the revision that seems to fix 2 games that
got broken by the last update. debugger output still looks sensible.
2015-12-13 19:20:58 +01:00
refractionpcsx2 d3ec74be2b Merge pull request #980 from AdmiralCurtiss/ff12mcdfix
FolderMemoryCard: Fix issue #976: Corrupted FF12 saves when overwriting data.
2015-12-13 00:08:42 +00:00
refractionpcsx2 b5b5a51897 Merge pull request #947 from ssakash/EE_Control_V2
EE: Rework overclock and underclock function
2015-12-12 15:08:18 +00:00
Jonathan Li 60426a5dec linux: Fix and simplify stdout/stderr redirection
Use close() instead of some dodgy read unblocking and thread cancelling
sequence - it fixes a race condition when closing PCSX2.

Move most of the setup/cleanup into LinuxPipeThread. In addition to
simplifying things, it should also mean that no messages to
stdout/stderr are lost - in the previous code there was a small period
of time where messages would disappear.
2015-12-11 08:52:28 +00:00
ramapcsx2 6a94a7d49a Enable loading psx games by default. Should help fixing PSX support when people don't have to first find the hidden config variable before they can even test this. 2015-12-05 12:31:45 +01:00
ramapcsx2 601d18272b Small fix to the timing revert: need to use gsRegionMode now since scansPerFrame isn't fixed anymore.
(NTSC modes would fail to update the vblank variable)
2015-12-05 02:07:27 +01:00
ramapcsx2 ff2845b2d2 When debugging vSyncInfoCalc(), some serious problems with the math resulted in a nearly saturated u64 and hRender being 0 in all video modes. Team decided to revert to the earlier version, even though it probably breaks "Legendz Gekitou! Saga Battle".
No one knows how any games even started in the broken state and we prefer code being sane('ish) over one game miraculously working. The change is pretty big so it needs some good testing!
2015-12-05 00:25:16 +01:00
Gregory Hainaut fb1a19f157 x86emitter: clean unused legacy type
Note: no need to check -1 on register allocation failure (a exception will be fired)
2015-12-02 19:09:43 +01:00
Gregory Hainaut 3684c26cbc ee: drop comma operator
New syntax is script friendly
2015-12-02 19:09:27 +01:00
Gregory Hainaut 9b19dfd562 ee: rename ptr variable
Avoid conflict with ptr[] function operator
2015-12-02 19:09:19 +01:00
Gregory Hainaut 255b592489 svu: rename ptr variable
Avoid conflict with ptr[] function operator
2015-12-02 19:09:12 +01:00
Gregory Hainaut 5dfe7ffc47 core: prepare the conversion to the new emitter naming 2015-12-02 19:09:04 +01:00
Juha Laukkanen c72400e927 Darwin/OSX - spu2x apple build with portaudio only.
OSX compilation fix: spu2x: Windows & Linux
2015-12-02 05:01:12 +02:00
Juha Laukkanen 4fa8834de4 Darwin/OSX ifdef __APPLE__ or __WXMAC__ cases.
OSX comment about __WXMAC__ usage
2015-12-02 05:00:41 +02:00
Juha Laukkanen 592aacb25a Darwin/OSX __POSIX__ definitions. 2015-12-02 05:00:41 +02:00
Gregory Hainaut 1f374e4b92 ee: add a comment on setjmp/longjmp behavior 2015-12-01 18:48:45 +01:00
Akash e06d45c07d GUI: use green text for slider default values 2015-12-01 20:31:51 +05:30
Gregory Hainaut 5761eba529 Merge pull request #1008 from PCSX2/recompiler-stack-alignment
mvu: keep stack aligned on 16B
2015-11-30 21:54:35 +01:00
Gregory Hainaut ba4d5b0b95 mvu: keep stack aligned on 16B
Fix a stack fault with address sanitizer (on linux)

v2: protect the code with GNUC (as it is already done in microVU_Execute.inl)
2015-11-30 21:53:41 +01:00
Jonathan Li 7055e29670 Merge pull request #969 from toehead2001/about-box
Clean up the About dialog
2015-11-29 09:31:52 +00:00
toehead2001 61067e9c3f Clean up the About dialog
Logo resource doesn't need it's own special line

Layout adjustments
2015-11-29 02:25:32 -07:00
Gregory Hainaut 9aec4229d5 x86emitter: support AVX2 (linux only?)
Nah kidding, it is only the cpu detection for the log

x86 Features Detected:
	SSE2.. SSE3.. SSSE3.. SSE4.1.. SSE4.2.. AVX.. AVX2.. FMA
2015-11-28 23:40:15 +01:00
Jonathan Li 609442318a debugger:linux: Fix list view sizing
The breakpoints, threads and stack frames list view sizing now works
properly on wx3.0.

It's still completely broken on wx2.8. Oh well.
2015-11-28 08:51:32 +00:00
Blyss Sarania 791cd3055b Enable LargeAddressAware in linker configuration
Negates users needing the 4gb patch for some games
2015-11-18 05:38:12 -06:00
Admiral H. Curtiss 5865c030cb FolderMemoryCard: Be a bit more paranoid regarding metadata writes and don't allow a flush to assume that a previous flush has already written the metadata of a file. 2015-11-17 22:25:48 +01:00
Admiral H. Curtiss 25064e86b8 FolderMemoryCard: 4cbe9ad5ef happens for the file mod/access metadata time write too, fix that. 2015-11-17 22:25:39 +01:00
Admiral H. Curtiss 4cbe9ad5ef FolderMemoryCard: When metadata in a memory card page changed to point at a different file than what it was on memory card load, the file handle cache that was introduced in 879d0c601f to prevent modification of currently loaded files would get confused and return the wrong file handle. Fixes #976. 2015-11-17 22:17:44 +01:00
Juha Laukkanen c15958f3c2 Darwin/OSX flat file reader stub. 2015-11-17 19:28:03 +02:00
Admiral H. Curtiss 186d58af01 FolderMemoryCard: Add some debugging functionality to examine the current memory card structure on load and flush. 2015-11-17 00:27:20 +01:00
Jonathan Li e347ad7723 gui: Fix theme directory path
wxDirName doesn't seem to work (and it should probably be called
pxDirName). Use plain old wxFileName instead.
2015-11-15 22:05:41 +00:00
Gregory Hainaut 21857ec12d Merge pull request #967 from PCSX2/remove-lazy-allocation
Reduce lazy allocation
2015-11-15 00:12:07 +01:00
Gregory Hainaut 91b2fd3c4a ee: create a dedicated _DynGen_DispatcherEvent function
for consistency of my doc
2015-11-14 10:29:03 +01:00
Gregory Hainaut d5830ef708 cmake: reenable a couple of missing gcc optimization 2015-11-14 09:54:09 +01:00
Gregory Hainaut 837b62d5e8 cmake: add an option to control PGO 2015-11-14 09:48:53 +01:00
Gregory Hainaut 07ec92175f Merge pull request #966 from PCSX2/game-starting-too-late-i627-v2
pcsx2: apply patch when first block is compiled
2015-11-13 18:50:44 +01:00
Akash c68714fd64 EE: add some nice comments 2015-11-13 15:30:28 +05:30
Gregory Hainaut dfba17c7dc Merge pull request #957 from PCSX2/mvu-custom-search
Mvu custom search
2015-11-12 12:12:11 +01:00
Gregory Hainaut d68d378a48 pcsx2: sign compare 2015-11-12 12:11:44 +01:00
Gregory Hainaut f2f28d1794 pcsx2: add missing case in switch 2015-11-12 12:11:44 +01:00
Gregory Hainaut 50ee00cfe5 ee: always handle manually page that contain thread context
There are 2 pages that contains a register context to handle Syscall/Interrupt.
Write protection is useless here.

The only purpose is to reduce the number of useless SIGSEGV at the start of a game
2015-11-12 10:48:30 +01:00
Gregory Hainaut e4f407ae7c ee: use enum for mmap_GetRamPageInfo returned value 2015-11-12 10:35:10 +01:00
Gregory Hainaut ef063b07b4 ee: move EE memory write protection into a function
recRecompile is already complex enough
2015-11-12 10:35:10 +01:00
Gregory Hainaut 26774a2fe0 recompilers: always allocate the first block
Avoid several annoying SIGSEGV at startup
2015-11-12 10:35:10 +01:00
Gregory Hainaut a4a0b42f8f recompilers: handle the memory by big block (instead of 4KB)
VIF recompilers: full size
EE/MVU/IOP: 1/4th of the size

Lazy allocation is still enabled but it will less triggered.
Next step is to always commit the first block
2015-11-12 10:35:10 +01:00
Gregory Hainaut 7565bcc789 ee: drop SpatialArrayReserve allocator
Let's the kernel manage the memory either with builtin lazy allocation or
swapped memory.

Avoid to handle SIGSEGV manually (nicer for debug) and removes 250 lines of code.
2015-11-12 10:35:10 +01:00
Gregory Hainaut 330704a5e9 pcsx2: apply patch when first block is compiled
Previous behavior apply the patch when first block is executed (it is
already too late)

V2: First tentative crash some games :(

Fix #627
2015-11-12 10:20:24 +01:00
Gregory Hainaut 71c8adcfb2 Revert "pcsx2: apply patch when first block is compiled"
This reverts commit fa1199ac24.

Got a crash on Gran Turismo 4 (devil may cry 3 too)
2015-11-12 10:05:51 +01:00
Akash 739faac264 EE: Invert the slider values logic 2015-11-11 18:46:09 +05:30
Akash 90b11b2fb9 EE: Rework overclock and underclock function 2015-11-11 18:45:40 +05:30
Gregory Hainaut fa1199ac24 pcsx2: apply patch when first block is compiled
Previous behavior apply the patch when first block is executed (it is
already too late)

Fix #627
2015-11-09 22:44:11 +01:00
Jonathan Li b6f78d8d95 gui:windows: Fix pxStaticText colours in Emulation Settings
The window is redrawn when Layout() is used (I think), so the text is
repainted with the correct colour.

This fixes the gray/ungray behaviour in the Emulation Settings dialog.
(Specifically, it affected the GS, Speedhacks, and Game Fixes Panel).
2015-11-08 22:07:20 +00:00
refractionpcsx2 dfd52282a7 Vif: Fix for Warship Gunner 2 geometry holes. Fixes Issue 665 2015-11-08 18:42:55 +00:00
Jonathan Li 85a1817ecc gui: Make Plugin/BIOS selector dialog wider
If the plugin info is too long it becomes truncated on Windows, which
could be quite annoying for testing.
2015-11-08 13:32:32 +00:00
Gregory Hainaut d9610d25e5 mvu: enable custom cmp function
From the comment, it used to be bad to gcc alignment issue.

Recent gcc align the stack on 16B boundary. Maybe it solved the issue.
I play severals minutes without any crashes but it requires more tests.
2015-11-07 17:42:08 +01:00
Gregory Hainaut 8fb6f0f328 debug: properly redo VU dissassembler function
I misses some calls in DisVUops. Use a macro to directly output the string
in the correct buffer position.
2015-11-07 13:55:47 +01:00
Gregory Hainaut 345a538c84 pcsx2: Clarify calculation precedence for '>>' and '?'
(cppcheck)
2015-11-06 23:01:58 +01:00
Gregory Hainaut e4e68a6179 debug: 'ostr' is used as parameter and destination in s[n]printf(). 2015-11-06 23:01:58 +01:00
Gregory Hainaut 1aa6749956 cdvd: remove break after return
cppcheck:[pcsx2/CDVD/CDVD.cpp:1120]: (style) Consecutive return, break, continue, goto or throw statements are unnecessary.
2015-11-06 23:01:58 +01:00
Jonathan Li 372db4b539 Merge pull request #946 from turtleli/linux-console
gui:linux: Redirect stdout/stderr to the PCSX2 console
2015-11-05 18:15:50 +00:00
Jonathan Li 5f5556ee69 gui:linux: Show plugin stdout/stderr in pcsx2 console
Behaviour is now similar to Windows, except we can also show messages in
the terminal as well.
2015-11-05 18:12:45 +00:00
Gregory Hainaut 6e7962e06a pcsx2: replace memset_sse_a by standard memset
Code is only enabled in dev build.

In the future allocation (therefore the memset) will be done at startup anyway.
2015-11-03 09:17:31 +01:00
Gregory Hainaut 8ab9cea3f7 pcsx2: comment set but unused variable 2015-11-02 07:54:24 +01:00
refractionpcsx2 83549e6f61 Merge pull request #940 from ssakash/dothack_fix
MicroVU: check for VF write on mvu flag hack .
2015-11-01 09:21:32 +00:00
Akash 6bf901faee MicroVU: check for VF write before flag set.
Fixes flickering issues on .Hack games, don't do a early break when Reg Index hasn't been written to a valid destination.
2015-11-01 04:38:58 +05:30
Akash 491efd91a5 EE: Prevent usage of uninitialized scalar variable
Fixes CID 153601 , CID 153602 , CID 153603
2015-10-31 15:26:34 +05:30
Gregory Hainaut 2f0077a081 pcsx2-ee: more cleaning of BaseBlockArray
* Remove useless erase(first)
* Move reserve in private section
* if 0 GetByX86
2015-10-30 21:59:06 +01:00
Gregory Hainaut 9c75c84e83 pcsx2-ee: Use a single constructor for BaseBlockArray
Directly reserve the array instead to rely on the reserve function.

+ add a couple of comments
2015-10-30 18:57:46 +01:00
Gregory Hainaut b215885188 pcsx2-ee: remove unused ManualPageTracking struct 2015-10-30 18:19:46 +01:00
Gregory Hainaut fee3d7c151 pcsx2: sed /branch/g_branch/
Be nice with grep.
2015-10-29 22:35:48 +01:00
Jonathan Li 6f4ba08d4a pcsx2:windows: Fix stdout/stderr redirection
The current redirection code doesn't work on VS2015:
 - It relies on undefined behaviour (*stdout/*stderr = *fp)
 - stdin/stdout/stderr are not pre-opened when compiled with the v140*
   toolkits
 - It seems to be the reason PCSX2 fails to terminate properly.

Use a combination of named pipes and freopen to redirect stdout/stderr.

Note: The redirect stuff doesn't seem to work in debug builds, both
before and after the change.
2015-10-28 19:27:15 +00:00
Gregory Hainaut 17e3c570ba pcsx2-ee: properly set the running variable
Fix exception propagation. Behavior is now equivalent to Windows.
2015-10-28 14:25:12 +01:00
Jonathan Li 344d6c201e pcsx2|utilities: Remove Windows wx2.8 code
It's not used anymore.
2015-10-28 00:02:11 +00:00
refractionpcsx2 dc5885790a Merge pull request #816 from ssakash/EE_Control
Speedhacks: Add Overclock function for EE cycle rate.
2015-10-27 15:01:40 +00:00
Akash 156f573842 R5900: Add Overclock function for EE cycle rate.
Pratically, use lower scalar values which eventually increases the clockspeed of the R5900.
2015-10-27 16:24:00 +05:30
Gregory Hainaut b7c51922e8 pcsx2: print a nice message when SYSCALL 2 is called
This syscall is used to setup the CRTC display. Maybe the information
can be useful for GS rendering.
2015-10-26 17:53:25 +01:00
Gregory Hainaut 6547881920 pcsx2: fix gcc reorder warning (due to previous init commit)
Lesson lear for myself, next time compile PR on my box before a merge
2015-10-25 21:17:59 +01:00
Gregory Hainaut 50e6306331 Merge pull request #919 from ssakash/coverity_init
Coverity: Initialize class members
2015-10-25 20:08:46 +01:00
Akash f6f8dc1a22 CDVD: Initialze all class members
CID 147025 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)8. uninit_member: Non-static class member m_current_count is not initialized in this constructor nor in any functions that it calls.
2015-10-25 14:11:43 +05:30
Akash b2ee732321 pcsx2-debug: Initialize all class members
CID 147005 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)2. uninit_member: Non-static class member PrePrefix is not initialized in this constructor nor in any functions that it calls.
2015-10-25 10:11:18 +05:30
Akash 1512b3ba6c pcsx2-debug: Initialize all class members
CID 146995 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)member_not_init_in_gen_ctor: The compiler-generated constructor for this class does not initialize cpu
2015-10-25 10:11:17 +05:30
Akash f95664e846 GUI: Initialize all class members
CID 146990 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)6. uninit_member: Non-static class member PluginId is not initialized in this constructor nor in any functions that it calls.
2015-10-25 10:11:15 +05:30
Akash 55a88688a3 GUI: Initialize all class members
CID 146984 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)6. uninit_member: Non-static class member m_performFileWrites is not initialized in this constructor nor in any functions that it calls.
2015-10-25 10:11:14 +05:30
Akash 589e838fa0 GUI: Initialize all class members
CID 146980 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)2. uninit_member: Non-static class member m_panel is not initialized in this constructor nor in any functions that it calls.
2015-10-25 10:11:00 +05:30
Akash c912064c8d GUI: Initialize all class members
CID 146979 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)2. uninit_member: Non-static class member m_miscGroup is not initialized in this constructor nor in any functions that it calls.
2015-10-25 10:03:35 +05:30
Akash 578b75aa76 GUI: Initialize all class members
CID 146978 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)4. uninit_member: Non-static class member s_rightside_buttons is not initialized in this constructor nor in any functions that it calls.
2015-10-25 10:03:33 +05:30
Akash 61e1686da3 GUI: Initialize all class members
CID 146977 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)6. uninit_member: Non-static class member SizeInMB is not initialized in this constructor nor in any functions that it calls.
2015-10-25 10:03:19 +05:30
refractionpcsx2 286769dc03 VIF MFifo: Simulate buffer filling time from Scratchpad.
-Fixes other Chessmaster hang.
-having it say it has data really quickly if the data incoming was huge seemed to throw it off.  I suspect it may actually be the time it takes to fill 16qw (or whatever is incoming if lower) is the wait time but it seems rather happy with the incoming data size.
2015-10-24 13:25:29 +01:00
refractionpcsx2 8d22006165 Vif MFIFO: Logic fix for Chessmaster. Game still needs EE Timing Fix to solve later hang in video, but game is playable now. Thanks to Ssakash for looking in to this :) 2015-10-24 03:30:29 +01:00
Gregory Hainaut 1f2d95db7e cmake: restore omit frame pointer optimization
Crash was related to unaligned stack in dyna_page_reset/dyna_block_discard
2015-10-23 22:17:14 +02:00
Gregory Hainaut ccea764556 EE-rec: Don't jump directly to C++ function
On linux, it breaks the 16B stack alignment requirement.

2 dispatchers were added to handle the call to the function. It avoid
any performance impact and remove the extra inlined asm

Fix #506
2015-10-23 22:16:49 +02:00
Gregory Hainaut 40b5195f0e EE-rec: don't save useless variable
the 2 static variables are only used to debug stack issue.
It saves 2 move instructions by block
2015-10-23 22:02:41 +02:00
Gregory Hainaut 464aeecef8 EE-rec: use uptr for function pointer
Avoid potential issue on 64 bits port
2015-10-23 22:02:41 +02:00
micove b13a1ff3dd Merge pull request #908 from micove/WX_PIZZA
Linux GUI: Fix invalid cast from 'wxPizza' to 'GtkBin'.
2015-10-21 16:38:21 -04:00
Gregory Hainaut 281c5e4c66 Properly swap the argument of the good option
AKA: redo commit d7afd7aae0 with the eye open...
2015-10-21 20:41:40 +02:00
Gregory Hainaut 2b06d34279 pcsx2: use Reassign of the scoped pointer to improve readability
Note: it is equivalent to a basic assignment due to operator overloading
2015-10-21 20:10:16 +02:00
Gregory Hainaut d7afd7aae0 pcsx2:debug: swap 2 arguments
It changes nothing but it is more consistent

CID 146916 (#1 of 1): Arguments in wrong order i
(SWAPPED_ARGUMENTS)swapped_arguments: The positions of arguments in the call to disBranch do not match the ordering of the parameters:

    rt is passed to rs
    rs is passed to rt
2015-10-21 20:10:16 +02:00
Jonathan Li aff1467ea3 debugger:linux: Fix wx2.8 compilation
Bind doesn't work on wx2.8. Replace with event tables and Connect.
wxString::Format also requires the format string to be L"something".
const char* requires an explicit conversion to wxString.
The show 128/64/32 bit menu column stuff doesn't have a direct wx2.8
replacement so just omit it - I'm not sure it's useful functionality
anyway.
2015-10-21 17:34:02 +01:00
Jonathan Li ccb261a8a3 debugger: Set wxGrid label font as well
It makes the debugger window more vertically compact.
2015-10-21 17:34:02 +01:00
Jonathan Li 9d23fc222a Merge pull request #885 from byehi5299/ctrlregisterlist
Rewrite CtrlRegisterList to allow scrolling and fix size issues.
It now works better on small screens and has simpler code.
2015-10-21 17:33:10 +01:00
Gregory Hainaut e5015faafa Merge pull request #906 from PCSX2/try-catch-register-allocation-error
pcsx2: generate an exception when recompilation failed
2015-10-21 15:16:45 +02:00
Gregory Hainaut a4c37d7f51 pcsx2: fallback to the interpreter if bad register allocation 2015-10-21 13:16:51 +02:00
Miguel A. Colón Vélez 8cf51c5cf4 Linux GUI: Fix invalid cast from 'wxPizza' to 'GtkBin'.
(PCSX2:32189): GLib-GObject-WARNING **: invalid cast from 'wxPizza' to 'GtkBin'
.
Cast the wxPizza directly to a GtkWidget. Looking at the wx3.0 source code the pizza
constructor returns a GtkWidget. Also GetHandle() returns a GtkWidget:
http://docs.wxwidgets.org/trunk/classwx_window.html#a185e6cd7065367b552748cb722651b27
2015-10-20 18:23:48 -04:00
Gregory Hainaut 796f831296 pcsx2: generate an exception when recompilation failed
Avoid the cost of checking -1 for a very rare case.

It misses currently a good fallback
2015-10-20 18:23:38 +02:00
Gregory Hainaut c42f46eba4 pcsx2: auto_ptr is deprecated in favor of unique_ptr 2015-10-19 13:41:34 +02:00
byehi5299 369a6a30da A few small formatting changes. 2015-10-18 22:01:30 -04:00
Jonathan Li 26de185f54 pcsx2: Fix OpenSUSE 13.2 wx3.0 compile
I have no idea why it fails to convert the wxString to a const wxChar *.
2015-10-18 15:13:59 +01:00
Gregory Hainaut 1c8f8a00b8 Merge pull request #894 from ssakash/coverity_fix
Coverity: Prevent NULL dereferences and other stuffs.
2015-10-17 16:00:28 +02:00
refractionpcsx2 706bbcf8a9 IOP Counters: Silly error fixed.
-Coverity CID 152835 & 152834: The expression's value does not depend on the operands; often, this represents an inadvertent logic error.
In psxRcntWcount32(int, unsigned int): An operation with non-constant operands that computes a result with constant value (CWE-569)
2015-10-17 12:52:49 +01:00
Akash b8caab5f3d pcsx2: prevent a potential null deference
CID 146889 (#1 of 1): Dereference null return value (NULL_RETURNS)4. dereference: Dereferencing a pointer that might be null wxGetApp()->GetDisassemblyPtr() when calling update

FindWindowById returns NULL if the Window with the given id is not found, no need to do a extra check for validation of the id. also do a check for wxGetApp()->GetDisassemblyPtr() to prevent a null deference.
2015-10-17 11:26:08 +05:30
refractionpcsx2 9a2212c86e IOP Counter/IRQ: Misc Counter and IRQ handling changes based on NoCash documents for PS1. 2015-10-16 00:48:26 +01:00
refractionpcsx2 d01f8f9252 VSync/EE Counters: Fixes for Fatal Fury BA 1 & Legendz Gekitou! Saga Battle
-Fix up Vsync again, broken back in google code days, broke Fatal Fury, matches PS2 test again.
-Corrected the Vsync Gate 0, which was the wrong way around, Causing Legendz Gekitou not to work unless Vsync was wrong
2015-10-16 00:38:04 +01:00
byehi5299 f7e10ed53e Rewrite of CtrlRegisterList class to enable scrolling. 2015-10-14 18:11:22 -04:00
refractionpcsx2 bbd74e5a7e Merge pull request #891 from ssakash/MicroVU_branch_addr
MicroVU: Replace BranchAddr macro with an Inline function
2015-10-13 16:36:35 +01:00
Akash 71dbe3e4c4 MicroVU: Replace BranchAddr macro with an Inline function
Coverity seems to not like the assert trick and only considers the macro as a single statement, so let's rework branchAddr and branchAddrN to satisfy coverity and improve the code quality. The following patch fixes 8 coverity issues with the same problem , CID 151736 - 151743.

(#1 of 1): Misused comma operator (NO_EFFECT)extra_comma: Part !!((mVU.prog.IRinfo.curPC & 1U) == 0U) of statement (!!((mVU.prog.IRinfo.curPC & 1U) == 0U)) , ((mVU.prog.IRinfo.curPC + 2U + (s32)((mVU.code & 0x400U) ? 0xfffffc00U | (mVU.code & 0x3ffU) : (mVU.code & 0x3ffU)) * 2 & mVU.progMemMask) * 4U) has no effect due to the comma.
2015-10-13 20:25:02 +05:30
Gregory Hainaut 4d680b73dc pcsx2 debugger: don't use erased iterator
CID 146848 (#1 of 1): Using invalid iterator (INVALIDATE_ITERATOR)
8. use_iterator: Using invalid iterator existing.

Directly edit the value through the iterator.
2015-10-13 00:17:28 +02:00
Gregory Hainaut 3027b4b694 pcsx2: exit function if we can't allocate an xmm register
Allocation must always succeed
2015-10-12 23:45:43 +02:00
refractionpcsx2 4560620210 GS-Wnd: Fix UI to show UI percentage. Set defaults for the title bar. Add a sort of lie mode omodec, which says you are using progressive when Interlace(Field) is active as this most isn't technically interlaced but actually half FPS, see this comment https://github.com/PCSX2/pcsx2/issues/832#issuecomment-141248883 2015-10-12 21:21:46 +01:00
refractionpcsx2 b3d9feb1f2 Merge pull request #880 from PCSX2/coverity-negative-index-array
pcsx2: forbid negative index of array in case of register allocation failure
2015-10-12 20:52:28 +01:00
Gregory Hainaut 63889d3bea pcsx2: replace error message with a dev assert
Code mustn't be reached. Otherwise registers aren't properly freed
2015-10-12 21:38:27 +02:00
Avi Halachmi (:avih) 5379b89dbd gui: kb shortcuts: handle Sys_TakeSnapshot with shift/ctrl better
There's only one plugin api for this, but GSdx also checks whether shift/ctrl
are held down, so PCSX2 needs to map those too to the same API.

Make this more systematic by only mapping one shortcut to this API, and then
deriving the other two from it amd mapping them too automatically.

This also makes it possible to override it at PCSX2_keys.ini since now it
doesn't need to handle different shortcuts for the same function (which it still
can't handle, but now it also doesn't need to for this function).
2015-10-12 04:04:14 +03:00
Avi Halachmi (:avih) 69a978fe05 gui: kb shortcuts: yet another fix for the ini parser
Apparently I logged the values incorrectly previously. I said
that shift-q  gets parsed as Q without shift, but actually the shift flag
is set correctly on such case (though the letter is still upper case for shift-q
and it's still lower case for plain q)

So I retested all the 8 modifiers combination, and noticed that the modifiers
are always parsed and set correctly, but the letter ends up upper case if any
modifiers are used, but lower case if no modifiers are used.

We still need to make lower if it's upper, but don't need to add the shift flag.
2015-10-12 03:33:50 +03:00
Avi Halachmi (:avih) efeb66c852 gui: kb shortcuts: fix z shortcut 2015-10-12 01:55:45 +03:00
Avi Halachmi (:avih) a76914a4b1 gui: kb shortcuts win: faster VK to WX translation with a table 2015-10-11 20:11:33 +03:00
Avi Halachmi (:avih) 68b4d54f18 gui: kb shortcuts: fix key codes for "non-special" keys
This patch fixes 3 different issues for wx event key codes and the ini parser.
- The ini parser (for PCSX2_keys.ini) parses symbols and letters correctly,
  but parsed `shift-q` as `Q` without shift. Now it's parsed as `q` with shift.
- the wx event keycode has the shift flag set correctly, but always has the
  upper case code for letters (e.g. `Q` when `q` was pressed, and `Q` with shift
  flag when shift-q is pressed). Now uses lower case for letters.
- For symbol-only keys (e.g. `-` or `=`), the keycode is the MS VK_.. thingy,
  e.g. for `=` it passed 187 instead of 61, or for `.` it had 190 instead of 46.
  Now returns the ascii code where possible (assuming US KB layout).

Also, when the DevCon is enabled, all key presses are printed to the console in
a format which could be copied to pcsx2_keys.ini, so this should allow also
non-US KBs to be set up for arbitrary symbols.

It should now be possible to use letters and symbols at PCSX2_keys.ini or as
default accelerators definitions within the code.

Note: this should have supposedly been fixed at r4918 ( 851bfba ), but neither
that build from the buildbot archive, nor the official 1.2.1 release (r5875),
nor the current builds have this working, which is really weird (tested on win8)
2015-10-11 19:25:24 +03:00
refractionpcsx2 31ee576d6a Sif: Limit/Mask transfer size to 1mb-16, thanks to jpd002 (Play!) for the fix!
Fixes #643 Gregory Horror Show, which seems to be playable (from nothing!)
2015-10-08 20:02:15 +01:00
Avi Halachmi (:avih) 9b988ee12d GS window title: use a template system to satisfy everyone
This allows to choose which items appear at the title and at which order, as
well as the text and some of the textual values (at PCSX2_ui.ini).

The template's variables (include % if relevant but not the surrounding text):
${slot}, ${limiter}, ${speed}, ${vfps}, ${cpuusage}, ${omodef}, ${omodei}, ${gsdx}

The system treats the GSdx info as a single unit, as well as the CPU usage info.
The UI section (at the CPU usage section) is only visible in devel/debug builds.

The current template values which also demonstrate all the configurable values:
[UiTemplates]
LimiterUnlimited=-unlimited
LimiterTurbo=-turbo
LimiterSlowmo=-slowmo
LimiterNormal=
OutputFrame=frame
OutputField=field
OutputProgressive=p
OutputInterlaced=i
TitleTemplate=Slot: ${slot} | Speed${limiter}: ${speed} (${vfps}) | ${cpuusage} | ${omodef}-${omodei} | ${gsdx}

The previous longer template values:
[UiTemplates]
LimiterUnlimited=None
LimiterTurbo=Turbo
LimiterSlowmo=Slomo
LimiterNormal=Normal
OutputFrame=Frame
OutputField=Field
OutputProgressive=Progressive
OutputInterlaced=Interlaced
TitleTemplate=${gsdx} | Limiter: ${limiter} | ${omodei} (${omodef}) | Speed: ${speed} (${vfps}) | ${cpuusage} | State: ${slot}
2015-10-08 06:05:45 +03:00
Jonathan Li d3ddf55df1 gui: Remove unused memory card dialog drag and drop code
The code seems to be leftover from a much older implementation.
2015-10-07 21:54:24 +01:00
Jonathan Li 80727aa4cc gui:linux: Fix memory card dialog drag and drop assertion
The assertion is a wxDateTime invalid assertion. But I have no idea why
it happens, and why it only happens on Linux.
2015-10-07 21:54:24 +01:00
Jonathan Li 919bdf05fe gui: Fix/simplify memory card dialog drag and drop
wxDataObjectSimple derived classes do not use a wxDataFormatId
parameter (only the wxDF_INVALID, wxDF_TEXT, wxDF_BITMAP, wxDF_METAFILE,
wxDF_FILENAME, and wxDF_HTML wxDataFormatIds are allowed because they
are implicitly converted). So drag and drop probably should have been
broken on Windows, but wasn't for whatever reason.

Let's fix and simplify the code by just using the built in
wxCustomDataObject. Also make move the default drag behaviour on both
Windows and Linux (previously default on Windows only).

It now works on Windows and Linux wx2.8/wx3.0 (previously only working
on Windows).
2015-10-07 21:53:32 +01:00
Avi Halachmi (:avih) abdb8266b6 GS window title: change State to Slot, minor limiter simplification 2015-10-07 04:44:05 +03:00
Avi Halachmi (:avih) 31813c29af GS window title info: improve, shorten
The goal here is to reduce clutter and to make it more useful by putting the
important values at the begining, and the less used values at the end. The GSdx
string is unmodified, and maybe we could simplify it too in the future.

Previously, the tile displayed the following items in this order:
<GSdx string>  - (e.g. GSdx OGL HW | 514x224 | None)
<output mode>  - Progressive/Interlaced (Frame/Field)
<limiter mode> - Limiter: None/Turbo/Slomo/Normal
<speed info>   - Speed: <100-based-percentage> (<vfps>)
<CPU usage>    - EE: <%> | GS: <%> | VU <%> | UI: <%>
<save state>   - State: <slot-number>

This patch changes the following to this order and format:
- Move the save state value to the front since it's actually useful.
- The speed value, which now includes the limiter value if not "Normal".
- Then the CPU usage parts, but the UI value only shows on debug/devel builds.
- The output mode, shortened to Frame/Field-i/p
- the GSdx string same as before only at the end

So all the info is still there as before (except UI), but more readable format.

E.g. before (normal limiter and turbo limiter):
GSdx D3D11 HW | 640x512 | None | Interlaced (frame) | Limiter: Normal | Speed: 100% (50.01) | EE:  43% | GS:   4% | UI:   0% | State 0
GSdx D3D11 HW | 640x512 | None | Interlaced (frame) | Limiter: Turbo | Speed: 443% (221.31) | EE:  99% | GS:  16% | UI:   0% | State 0

E.g. after (normal limiter and turbo limiter) for the same values as above:
State 0 | Speed: 100% (50.01) | EE:  43% | GS:   4% | frame-i | GSdx D3D11 HW | 640x512 | None
State 0 | Speed (Turbo): 443% (221.31) | EE:  99% | GS:  16% | frame-i | GSdx D3D11 HW | 640x512 | None
2015-10-07 04:08:09 +03:00
Jonathan Li addf3d5331 pcsx2: Throw the exception
Coverity CID 146842: Dereference after null check (FORWARD_NULL)
2015-10-07 00:37:40 +01:00
Avi Halachmi (:avih) fa04f0970e gui: ESC on fullscreen: better resilience
Make sure we exit fullscreen only if the GS window is visible and in fullscreen.

While we don't currently have such cases, it's possible that the Sys_Suspend
command is called while it's already suspended (and the GS window is hidden)
but the code without this patch would have incorrectly made it visible again.
2015-10-07 01:10:43 +03:00
Avi Halachmi (:avih) 9c1688a39a GS window: try to fix ESC on fullscreen sometimes not exiting correctly
This tries to emulate LilyPad's "Safe fullscreen exit on escape" hack, and
hopefully also makes this LilyPad hack redundant, such that it would fix the
issue also with other input plugins.
2015-10-06 19:09:45 +03:00
Avi Halachmi (:avih) 4522418890 GSFrame: remove unused style argument at ShowFullScreen 2015-10-06 19:01:24 +03:00
Avi Halachmi (:avih) 2cd0829a8d updated a comment that --noguiprompt also works correctly at fullscreen
The issue that fullscreen was not restored if the --noguiprompt confirmation
was aborted was already fixed implicitly via e4d8af0, therefore the comment
ended up incorrect. Also explain why it was broken when emulation was not
suspended before this commit, and how it could have been fixed.
2015-10-06 15:31:36 +03:00
Avi Halachmi (:avih) e4d8af0c97 gui: exit prompt for --noguiprompt: suspend while visible
When using --nogui and --noguiprompt and the user presses ESC, a prompt is
displayed asking the user to confirm exiting/closing PCSX2. This patch suspends
the emulation while this prompt is displayed.

Also updated the comment that if LilyPad has "safe fullscreen exit on ESC", then
full screen is not restored automatically if this prompt is canceled.
2015-10-06 02:08:28 +03:00
Jonathan Li 5f2e60d751 gui:windows: Scale confirmation dialogs at high DPI
This should scale all the other dialogs that don't have specifics widths
set.
2015-10-05 20:11:20 +01:00
Jonathan Li 31b1e34ae8 gui:windows: Fix memory card dialogs at high DPI
Specifying a minimum size for the filename text controls seems to mess
up the size calculations at higher DPIs and causes usability issues.
Use sizers and proportions instead.

Also scale the dialog widths with the DPI.
2015-10-05 20:10:40 +01:00
Jonathan Li f11596fabc gui: Fix missing retry and abort button labels
Retry and abort don't have default labels, so you end up with blank
buttons on both Windows and Linux. Fix it.

Retry is used by the portable mode settings dialog. I'm not sure if
abort is used anywhere.
2015-10-05 20:02:32 +01:00
Jonathan Li 84b17765c2 gui: Fix memory card dialog message truncation
Use sizer flags so the messages aren't truncated. The message truncation
wasn't noticeable in English.
2015-10-05 20:02:32 +01:00
Jonathan Li 5856d77371 pcsx2: Pass IsoFile parameter by reference
Coverity CID 146905, 146906: Big parameter passed by value
(PASS_BY_VALUE)
2015-10-05 20:02:31 +01:00