Commit Graph

535 Commits

Author SHA1 Message Date
BearOso
1041ff3e24 Gtk: Add Ukrainian translation from StanleyKid-22. 2022-03-01 18:22:03 -06:00
BearOso
8f5afb1013 gtk: Initialize jd 2022-02-19 13:22:20 -06:00
bearoso
17e75b1469
Merge pull request #741 from jraby/gtk-joystick-hotplug
gtk: Support adding/removing joysticks at runtime
2022-02-19 13:20:38 -06:00
Jean Raby
65d41e7b37 joynums.fill(false); 2022-02-18 16:12:19 -05:00
Jean Raby
38b1e495ea Move joystick + related functions under JoyDevices 2022-02-18 15:43:52 -05:00
Jean Raby
e1685b05eb range-based for loops + simplify joynum assignment 2022-02-18 11:08:20 -05:00
Jean Raby
cdbf783fc4 gtk: Support adding/removing joysticks at runtime
Reworked how/where SDL events are polled:
  - poll_joystick_events is now a static member of JoyDevice so it can be
    called from outside when needed (preference window for config and
    caliration).
  - S9xProcessEvents calls JoyDevice::poll_joystick_events directly so
    events are polled when no joysticks are attached.
  - JoyDevice::poll_joystick_events handles SDL_JOYDEVICE{ADDED,REMOVED}
    events.
  - Individual JoyDevice no longer call poll_joystick_events from
    get_events.

Reworked how attached joysticks are maintained in Snes9xConfig:
  - Use a map for joysticks keyed on SDL JoystickID (instance id in sdl
    parlance), which is stable while a joystick is attached instead of
    an array keyed on device_index.
    The instance id is what poll_joystick_events gets with every
    event (except for SDL_JOYDEVICEADDED which gets a device_index...)
    Instance id is an incrementing int starting from 0, they are never reused.
    i.e. each attach/dettach/attach cycle yields a new id.
    Whereas device index are reused and can "move".
  - On SDL_JOYDEVICEADDED the joystick is handed a "joynum", that is, an
    int from 0 to NUM_JOYPADS-1. A new joystick always get the lowest
    available joynum.
    (joynum was already a member of JoyDevice but wasn't initialized,
    this seemed like a proper way to use it.)
  - On SDL_JOYDEVICEREMOVED, the joystick associated with the instance
    id is simply removed from the map.

All this allows for the following behaviors.
It is possible to start without any joystick, add one joystick and it works.
(disconnect/reconnect cycles with a single joystick also work)

Joystick numbers are "stable" while they remain connected. For example:
 - Start with joystick0 and joystick1 connected
 - if joystick0 is disconnected, joystick1 keeps its number and keeps
   working
 - if joystick0 (or any new joystick) is connected at this time,
   it gets to become joystick0

If all joysticks are disconnected while snes9x is running, the order of
the "reconnections" will determine the joystick number of each joystick.

I think there is room for improvement still, with regards to code
organization. For instance, there could be a "JoyDevices" class which
would handle all the attached JoyDevice. This would allow moving all the
"joystick_*" methods from Snes9xConfig to that new class, and
poll_joystick_events could also be moved there.
The functionality wouldn't change, but the intent/ownership would probably be clearer.
2022-02-17 11:02:53 -05:00
Jean Raby
e6118290e2 gtk: Simplify S9xOpenSnapshotFile
This is basically what osx and libretro do, just use the provided
filename.
The code this replaces had a hard time handling relative paths,
it would prepend the leading directories to fname, which would
most of the time resolve to an invalid path.
(e.g ./roms/romname.000 -> ./roms/roms/romname.000)
2022-02-13 21:57:58 -05:00
Jean Raby
c81d3baca1 gtk: save_state_dialog - use filename without dir 2022-02-13 21:56:42 -05:00
BearOso
d4cec8eb2a Gtk: Wayland: Use older wayland API for compatibility. 2022-01-31 16:56:17 -06:00
BearOso
da23559f2f Gtk: Add wayland-client as wayland dep. 2022-01-31 16:32:27 -06:00
BearOso
f56b1e7668 Gtk: Wayland: Add idle inhibitor. 2022-01-30 21:23:33 -06:00
BearOso
c8ffda83e7 Gtk: Set default background to starfield. 2022-01-30 18:34:51 -06:00
BearOso
eb2c993a91 Update version and copyright for 1.61. 2022-01-30 17:52:50 -06:00
BearOso
34b6160805 pulseaudio: Fix potential stall with Pipewire
Pipewire allows very small buffer sizes. It's possible that Snes9x
will accumulate enough samples in fast-forward to exceed this.
Instead of waiting forever for the buffer capacity to free up, just
write the number of samples for the free space after one small wait.
2021-12-20 12:21:43 -06:00
BearOso
cf2d1bf791 Gtk: OpenGL: Fix non-PBO output path. 2021-05-15 11:23:12 -05:00
BearOso
da4bd2a018 Gtk: Make sound driver check a little simpler. 2021-05-15 11:23:12 -05:00
BearOso
364aa1ba5d Gtk: OpenGL: Use correct screen for fbconfig. 2020-11-04 13:11:28 -06:00
BearOso
77fb6ff958 Gtk: Unthread preferences creation. 2020-11-04 12:55:25 -06:00
BearOso
2bab4c41b1 Revert "Gtk: OpenGL: Try to ensure window is mapped."
This reverts commit c4a269b32a.
2020-11-04 12:54:44 -06:00
BearOso
b4de90a0f1 Revert "Gtk: Reorder init."
This reverts commit a9a9b0fafb.
2020-11-04 12:41:55 -06:00
BearOso
a9a9b0fafb Gtk: Reorder init.
This should give the window time to create, and we ensure Gtk
has a main loop iteration so it's done.
2020-11-04 12:10:30 -06:00
BearOso
c4a269b32a Gtk: OpenGL: Try to ensure window is mapped. 2020-11-04 12:03:28 -06:00
BearOso
c283df610c Fix misspelling.
Complement, not compliment.
2020-11-03 10:28:01 -06:00
BearOso
bb622bdf5b Add a compat.cpp file for compatibility symbols. 2020-09-07 10:57:17 -05:00
BearOso
2fc8b40e0e Gtk: Fix '&' in rom info dialog. 2020-08-24 14:21:24 -05:00
BearOso
6d1d0ab121 Gtk: Still use theme icon if available. 2020-08-23 17:47:27 -05:00
BearOso
4c3d043880 Gtk: Update built-in mini-icon. 2020-08-23 17:46:25 -05:00
BearOso
1fc5a2d4d6 Gtk: Fix crash when no icon is found. 2020-08-23 17:17:55 -05:00
BearOso
95c7fdad1f Gtk: Thread preferences creation. 2020-08-23 16:28:01 -05:00
BearOso
a3c0c4621d Gtk: Don't pass arguments to gtkmm application.
It tries to usurp the filename argument.
2020-08-09 14:28:20 -05:00
BearOso
03d3f69a0c Gtk: Shaders: Use our copy of glslang headers
Add include to compiler command to prevent use of system headers.
2020-08-08 12:01:10 -05:00
BearOso
e705e71a97 Remove S9xChooseMovieFilename
This is integration of the frontend with the core. Disable
the button mappings that use it. The frontend should implement on
its own.
2020-08-07 14:08:51 -05:00
BearOso
f04f1bbe44 Remove S9xChooseFilename
This is integration of the frontend with the core. Disable
the snapshot button mappings that use it. Any frontend should
implement those port commands its own.
2020-08-07 14:08:51 -05:00
BearOso
063b3a959c Move _splitpath and _makepath into core. 2020-08-07 14:08:51 -05:00
BearOso
e322bbf109 Remove S9xSetPalette 2020-08-07 14:08:51 -05:00
BearOso
bdd061847e Gtk: Fix recent menu. Add game name to title. 2020-07-30 18:24:54 -05:00
BearOso
6e9cfce6f1 Gtk/Shaders: Use embedded copy of glslang. 2020-07-29 18:32:46 -05:00
Brandon Wright
fd88971598 Gtk: Don't expand shader parameter widgets. 2020-07-27 17:58:03 -05:00
Brandon Wright
a20e726ca2 Gtk: Add gthread library dependency. 2020-07-21 14:17:15 -05:00
Keith Bowes
edb4866671 Indicate Meson version 2020-07-21 13:49:13 -04:00
Brandon Wright
e17ff69533 Gtk: Switch codebase to gtkmm.
GTK: Remove support for GTK+ 2.0.

GTK 3 is stable and widespread enough now.

GTK: Rearrange headers to eliminate gtk_s9xcore.h

Gtk: Initial gtkmm conversion work.

Gtk: More gtkmm conversion and bug fixing.

Gtk: More gtkmm fixes.

Gtk: More Fixes

OpenGL no longer creates a second window.
Accelerators are fixed.

Gtk: More fixes

Removed GLX context dependency on Gtk.

Gtk: Fix formatting.

Gtk: Remove a #pragma once
2020-07-17 14:48:34 -05:00
Brandon Wright
3c3ea985ef GTK: Refactoring of display output code.
Moves buffer management to single location.
2020-06-30 17:28:10 -05:00
bearoso
341a6c7aea
Merge pull request #636 from LinRs/zh_CN
GTK: Add Simplified Chinese translations
2020-06-30 14:14:46 -05:00
bearoso
fd558dbd05
Merge branch 'master' into master 2020-06-30 14:13:50 -05:00
Brandon Wright
0f0914cca5 GTK: Config code cleanup. 2020-06-21 15:25:54 -05:00
AlexApps99
9e91d9d8ae Fixed sound playing while in turbo after pause
(this may break other aspects of audio around pausing)
2020-06-21 22:02:08 +12:00
AlexApps99
4f3e6681ef Added rewind to turbo mute 2020-06-21 21:46:27 +12:00
Brandon Wright
5c3fbf6740 Fix some warnings.
Removed sstrncpy function.
Changed bindings in GTK port to std::array and fixed packing nonsense.
2020-06-20 10:44:11 -05:00
Pablo Lezaeta Reyes
bbdc7e2f21 Update Spanish Translation
Signed-off-by: Pablo Lezaeta Reyes <jota@Jota-PC.localdomain>
2020-06-12 02:51:13 -04:00