Commit Graph

116 Commits

Author SHA1 Message Date
Vas Crabb
2810c9d91b osd: Turned video modules into actual modules, fixed various issues.
Don't ignore the return status of OSD module initialisation.  Attempt to
fall back to an alternate module if the selected module fails to
initialise.  Log more useful diagnostic information at verbose level.

Fixed BGFX crash on exit after toggling fullscreen.  Also persist more
settings than just the selected chains across toggling fullscreen.

Turned video modules into OSD modules in the same sense as all the other
OSD modules.  They now use the same selection/fallback mechanism as all
the other modules without special extra code in the OSD implementations.

Untangled some object ownership mess.  Windows own renderers, OSD
objects own windows.  Fixed a refrence loop that caused the first window
object to always leak.

Don't create renderer object until after underlying window has been
created.  Fixed issues with order of creation/destruction when toggling
fullscreen or changing prescale in fullscreen with -switchres in SDL
builds.

Use more smart pointers in BGFX and Direct3D render modules.  Most of
the code now reutrns a smart pointer when handing over ownership or a
naked pointer when retaining ownership.  Fixed a few leaks and
simplified cleanup code.

Encapsulated various OSD modules better.
2023-02-01 04:00:44 +11:00
Vas Crabb
68472d3d72 Various input and OSD refactoring:
osd: Supply OSD object to modules on initialisation.  Encapsulated some
event handling in the OSD objects rather than leaving it in free
functions.  Put various stuff in namespaces.

osd/modules/input: Enabled dinput, xinput and winhybrid modules for
Windows SDL builds, and enabled background input for dinput and xinput
(and by extension winhybrid) modules.  Also fixed some COM and X11
resource leaks.

osd/modules/input/input_sdl.cpp: Flipped SDL mouse button order to match
Windows, and exposed vertical and horizontal scroll as Z and rZ axes.
Moved SDL UI event handling out of input devices into OSD object.

osd/modules/input_rawinput.cpp: Changed lightgun Z axis token so it's
correctly identified as a relative axis (it maps to the scroll wheel
equivalent).

osd: Added an option to choose the network provider module.  Mostly
useful if you build with both TUN/TAP and pcap support included, or if
you want to disable emulated networking completely.

emu/input.cpp: Use a better strategy for assembling input code names
that uses fewer temporary strings and doesn't require use of the
non-Unicode-aware space trimming function (fixes MT08552).

osd/modules/input_dinput.cpp: Improved polling logic.

osd: Made various parts of the input code less dependent on concrete emu
objects, and reduced inappropriately passing around the machine object.
Made input modules less dependent on OSD implementation.  Encapsulated
some stuff and got rid of some vestigial newui and SDL1 support code.
Cleaned up some interfaces.  Moved OSD options classes to their own
files.

Prepare to remove main.h from emu.h - it's mostly used to get the
application name, which the vast majority of emulated devices don't need
to do.
2023-01-29 03:16:14 +11:00
Miodrag Milanović
812e6094f4
Update BGFX, BX and BIMG (#10789)
* Update to bgfx a93a714632b79b5ddbf5c86ac323fa9b76ed3433
Co-authored-by: Бранимир Караџић <branimirkaradzic@gmail.com>
2023-01-05 09:32:40 -05:00
Vas Crabb
051c380fd1 Patched up some gaps in functionality and fixed some bugs.
ui: Added some missing functionality:
* Added an option to copy input device IDs to the relevant menus.
* Added an item for setting the software lists files path (-hashpath) to
  the folder setup menu.
* Allow pasting text from clipboard in most places that allow typing
  (searching, entering filenames, entering barcodes).
* Changed the software selection menu heading to be a bit less
  misleading.
* Made barcode menu less eager to rebuild itself unnecessarily, and
  removed some confusing and apparently pointless code.

Exposed more Lua bindings:
* Added low-level palette objects.
* Added indexed bitmap types.
* Added a bitmap method for extracting pixels from a rectangular area as a
  packed binary string.
* Changed screen device pixels method to return width and height in
  addition to the pixels.

osd: Added some functionality and cleaned up a little:
* Added a function for copying text to the clipboard.
* Moved function for converting Windows error codes to standard error
  conditions to winutil.cpp so it can be used from more places.
* Removed duplicate declaration of osd_get_clipboard_text and made the
  function noexcept (including fixing implementations).
* Made macOS implementation of osd_get_clipboard_text skip the encoding
  conversion if it finds UTF-8 text first.
* Changed the default -uimodekey setting so it doesn't lose the "not
  shift" that stops the default from interfering with UI paste.

Various bug fixes:
* util/unicode.cpp: Fixed the version of utf8_from_uchar that returns
  std::string blowing up on invalid codepoints.
* util/bitmap.h: Fixed wrapping constructors for indexed bitmaps taking
  the wrong parameter type (nothing was using them before).
* util/bitmap.cpp: Fixed potential use-after-free issues with bitmap
  palettes.
* emu/input.cpp, emu/inputdev.cpp: Log 1-based device numbers, matching
  what's shown in the internal UI and used in tokens in CFG files.
* emu/emumem.cpp: Added the bank tag to a fatal error message where it
  was missing.

docs: Reworked and expanded documentation on configuring stable
controller IDs.

For translators, the changes are quite minor:
* There's a menu item for copying a device ID to the clipboard, and
  associated success/failure messages.
* There's the menu item for setting the software list file search path.
* One of the lines in the software selection menu heading has changes as
  it could be interpreted as implying it showed a software list name.
2022-09-02 08:55:16 +10:00
Miodrag Milanovic
8aa5c5a29c Remove OSD_UWP from rest of code 2021-10-26 11:45:04 +02:00
Vas Crabb
0ba5d664f9 Add new files to SDL OSD as well as Mac OSD. 2021-10-18 08:46:17 +11:00
Vas Crabb
e8bbea1fc6
formats, osd, util: Started refactoring file I/O stuff. (#8456)
Added more modern generic I/O interfaces with implementation backed by stdio, osd_file and core_file, replacing io_generic.  Also replaced core_file's build-in zlib compression with a filter.

unzip.cpp, un7z.cpp: Added option to supply abstract I/O interface rather than filename.

Converted osd_file, core_file, archive_file, chd_file and device_image_interface to use std::error_condition rather than their own error enums.

Allow mounting TI-99 RPK from inside archives.
2021-08-22 09:06:15 +10:00
AJR
60e518cc50 Low-level #include overhaul
- vecstream.h: Revert changes made in aa29519528. The std::string_view conversion has been made a non-member function (util::buf_to_string_view) and moved to coretmpl.h.
- strformat.h: Remove the using declaration importing util::string_format into the global namespace. It has been moved to emucore.h and a few tool sources; other references have been qualified.
- osdcore.h: Split out file, directory and path classes and methods to a new header (osdfile.h), Doxygenizing the documentation comments.
- Disaggregate many #includes that were including other standard or custom headers. emu.h now includes basically the same things that it did, but other headers have been streamlined; for instance, emucore.h no longer stealth-includes osdcore.h several ways.
2021-01-02 15:18:15 -05:00
arbee
ca1bf9a040 Add AudioToolbox framework when building SDL2 on macOS, fixes TOOLS=1 link errors [R. Belmont] 2020-12-13 16:48:55 -05:00
Vas Crabb
5bce46bd75 Removed winpcap and cleaned up network module selection.
(nw) The pcap.h header itself has the problematic original BSD license,
including the obnoxious advertising clause.  Using tap/tun networking on
Windows provides a much better experience, so the extra setup is worth
it.  This patch also allows you to enable pcap on platforms where it's
disabled by default with USE_PCAP=1 if you really want to use it.
2020-03-05 21:23:21 +11:00
Julian Sikorski
6e66a83642 Odroid n2 build fixes (#5751)
* Allow specifying NO_OPENGL manually

* Switch bgfx to OpenGL ES renderer if NO_X11 is specified

* Only link against EGL when NO_X11 is specified on linux, netbsd and openbsd

* Only switch bgfx to OpenGL ES on linux, netbsd and openbsd

* Indentation fix
2019-10-18 10:31:08 -04:00
68bit
5c482945c6 asmjs: avoid explicitly linking SDL2_ttf.
It appears that it is sufficient to include `-s USE_SDL_TTF=2`, and
emcc links in the SDL2_tff library, and it does not like attempts to
link this twice.
2019-08-28 14:25:27 +00:00
68bit
6d76d3f8f8 asmjs: can not ignore errors on missing libraries
The current Emscripten release is not happy with the use of
"-s ERROR_ON_MISSING_LIBRARIES=0" as a link option, it gives an error
stating that all libraries must now be present, so remove that use.

This leaves a missing 'util' library. This did not appear to be
needed on the few builds I have tried, and this patch avoids adding
this library for asmjs.
2019-08-28 14:25:27 +00:00
Kiall Mac Innes
16bbe847ef Disable WII Lightgun hack by default (#5056) 2019-05-14 16:55:59 -04:00
Kiall Mac Innes
489087f173 Enable Xinput by default
On Linux, enable Xinput support by default. The Xinput lightgun driver is the
only reliable+accurate method to use lightguns on Linux, we should enable this
by default to reduce the friction for Linux Lightgun users. This should have no
effect on users of Windows/Mac etc.
2019-04-21 12:48:51 -07:00
Vas Crabb
97b6717027 (nw) Clean up the mess on master
This effectively reverts b380514764 and
c24473ddff, restoring the state at
598cd52272.

Before pushing, please check that what you're about to push is sane.
Check your local commit log and ensure there isn't anything out-of-place
before pushing to mainline.  When things like this happen, it wastes
everyone's time.  I really don't need this in a week when real work™ is
busting my balls and I'm behind where I want to be with preparing for
MAME release.
2019-03-26 11:13:37 +11:00
andreasnaive
b380514764 Revert "conflict resolution (nw)"
This reverts commit c24473ddff, reversing
changes made to 009cba4fb8.
2019-03-25 23:13:40 +01:00
Vas Crabb
8ffff5d2d3 (nw) misc stuff:
* Document cross-compilation options
* Use lowercase for some libraries that are lowercase in system32 on Windows anyway
* Make USE_BUNDLED_LIB_SDL2=0 not use the bundled SDL
2019-02-18 21:13:44 +11:00
Vas Crabb
176ba64b26 attempt to fix testkeys linking in more configurations (nw) 2019-02-18 14:28:00 +11:00
couriersud
9c9fe82d4f Fix cross compile mame/sdl/windows. (nw) 2019-02-17 12:45:18 +01:00
cracyc
a99407afb5 Discord plugin try 2 (#3640)
* plugins/discord: discord presence plugin [Carl]

* plugins/discord: use domain sockets and pipes [Carl]

* winptty: fix connecting to existing socket (nw)
plugins/discord: show pause state (nw)

* plugins/discord: fix pause behavior (nw)
2018-06-08 19:25:39 -04:00
smf-
68b16a8808 added -lSDL2main to fix linking with gcc 7 [smf] 2017-12-26 11:11:50 +00:00
npwoods
3d553eda60 Attempted to sanitize/rationalize how we access UTF-8 command line arguments (#2532)
Specifically, this creates a call osd_get_command_line() that returns UTF-8 command line arguments as std::vector<std::string>.  On non-Windows platforms, this does nothing more than build the vector.  On Windows, this invokes GetCommandLineW() and CommandLineToArgvW().  This also attempts to unwind usage of wmain()/_tmain() on Windows, which is not standard.

Related to this, this fixes a bug in Imgtool; specifically, non-7 bit ASCII was not being handled correctly in Windows.

This is really an admission that the way that Windows handles Unicode and command line arguments sucks, and it is my belief that having a wmain() or _tmain() declaration specific for Windows is a worse solution.  C'est la vie.

I'm very open to the idea that src/osd/osdcore.[cpp|h] is not the best place to do this.  Let me know if I should move it.
2017-09-18 20:28:53 -04:00
dankan1890
0e638ad0a2 Lua scripts cleanup. 2017-05-14 14:20:38 +10:00
Vas Crabb
192c09b374 comma (nw) 2017-01-23 19:42:19 +11:00
Vas Crabb
2d6477f872 This isn't behaving how I expect, investigate another time (nw) 2017-01-23 19:37:51 +11:00
Vas Crabb
110bc692fa portaudio needs COM (nw) 2017-01-23 19:12:47 +11:00
Brad Hughes
bf52d11826 Convert OSD monitor info to modules plus add DXGI implementation 2016-09-14 08:32:05 -04:00
R. Belmont
13c8e76cf7 Merge pull request #1093 from stevenc99/kfreebsd
GNU/kFreeBSD support
2016-07-16 06:09:32 -04:00
Steven Chamberlain
ad91a1391c qtdbg: compile with -fPIC on freebsd also 2016-07-13 13:31:11 +01:00
Bernhard Frauendienst
cb5495f738 Take pkg-config path from env if defined 2016-07-09 22:49:30 +02:00
Vas Crabb
5cee9e9bc4 POSIX implementation for new directory read features, cleanup of Windows implementation, return directory handle as smart pointer, fix full build [Vas Crabb] 2016-06-25 03:35:23 +10:00
Jeffrey Clark
2e8521cde0 fix android target libSDL2 circular ref (nw)
also rename ANDROID_NDK_ROOT -> ANDROID_NDK_LLVM to point directly to
prebuilt host compiler (removes windows only restriction).
2016-06-04 00:34:43 -05:00
Miodrag Milanovic
37c94e3373 Update windows to use platform independent watchdog implementation (nw) 2016-04-15 16:01:35 +02:00
Miodrag Milanovic
59662e6c71 moved osdsync to root of OSD, removed osdmini (nw) 2016-04-15 15:19:24 +02:00
Miodrag Milanovic
39c9c8c5dc Remove os dependant output handling (nw) 2016-04-09 15:19:43 +02:00
Miodrag Milanovic
bad2e6199e Not needed anymore after move to C++11 features (nw) 2016-04-03 19:47:44 +02:00
Miodrag Milanovic
cea094a3a3 moved aueffectutil to tools (nw) 2016-04-03 19:06:06 +02:00
Miodrag Milanovic
5e80a732aa move clipboard handling on proper place (nw) 2016-04-03 17:55:10 +02:00
Miodrag Milanovic
d8aa889edf merge main.cpp for windows platform (unicode) (nw) 2016-04-03 17:55:10 +02:00
Miodrag Milanovic
796f890450 removed testkeys (nw) 2016-04-03 17:19:41 +02:00
Miodrag Milanovic
9b3788035c scrclean on lua scripts (nw) 2016-03-29 08:49:47 +02:00
Miodrag Milanovic
158c90cf11 Initial work to make MAME work on Android [Miodrag Milanovic] 2016-03-27 17:35:23 +02:00
Vas Crabb
fc87913612 Fix SDL Windows build 2016-03-14 19:32:17 +11:00
Vas Crabb
42fbb9c396 Make osd_file a polymorphic class that's held with smart pointers
Make avi_file a class that's held with smart pointers, encapsulate various AVI I/O structures
Make zip_file and _7z_file classes rather than having free functions everywhere
Hide zip/7z class implementation behind an interface, no longer need to call close() to send back to the cache
Don't dump as much crap in global namespace
Add solaris PTY implementation
Improve variable expansion for SDL OSD - supports ~/$FOO/${BAR} syntax
Rearrange stuff so the same things are in file module for all OSDs
Move file stuff into its own module

7z/zip open and destruct are still not thread-safe due to lack of interlocks around cache access
Directory functions still need to be moved to file module
SDL OSD may not initialise WinSock on Windows
2016-03-14 18:55:00 +11:00
Miodrag Milanovic
5fc2774703 Clang 3.8.0 supports -municode (nw) 2016-03-14 07:55:17 +01:00
Miodrag Milanovic
d9510ed04d Used std::thread and std::condition_variable (nw) 2016-03-01 20:52:56 +01:00
Brad Hughes
f68ad66131 Merge input modules work. 2016-02-28 14:56:54 -05:00
Brad Hughes
7dfb578559 Refactor OSD input into modules 2016-02-28 14:25:10 -05:00
Miodrag Milanovic
1adc64573f compiles but crash on OSX with bundled one (nw) 2016-02-28 15:07:43 +01:00