This was semi-intentionally skipped in the intial port revival
because the focus was on N810 at the time.
This is mostly copied from the old 1.2.1 port and then cleaned up.
Some project files (iPhone) and backend files (Symbian) still reference m4.dat,
but I know not enough on how to remove that without breaking something.
The header contains forbidden symbols on some platforms, and the
simplest solution seems to be to include it here. This also includes
it from all the portdefs.h files, except the Symbian one. Probably
the FIXME and the #if can be removed once it's known to work.
This is because the top GUI keymap is for the keymapper dialog itself.
If all GUI keymaps are skipped then when inside a game with the GMM displayed
and the keymapper dialog invoked, the game keymap is displayed even though it
is not the active one.
This fixes a problem where opening the keymapper dialog would cause the current game
keymap to be displayed as the active keymap but then changing the keymap selection
back to it would cause the GUI keymap to be displayed as the active one. The GUI keymap
was indeed at the top of the stack but that's not the desired effect.
Also move the pushing and popping of the keymap to Dialog::Open/Close
Also constantify the GUI keymap name
If we leave it for OSystem, the DefaultTimerManager destructor tries
constructing a StackLock which, predictably, calls a pure virtual
function, because OSystem_Android's destructor is finished.
N800 doesn't have a CTRL key to activate the virtual keyboard with.
Fullscreen can still be enabled/disabled through the GUI and was the most
likely sacrifice as a hardware key.
This reimplement getSystemLanguage() for MacOS X because
setlocale() only works if the application is started from the terminal.
Instead we use CFBundleCopyPreferredLocalizationsFromArray() which
requires the translations to be listed in the bundle plist file (this had
already been committed). This fixes bug #3394080.
* Note: This really should be cleaned up and all backends that have a custom loadGFXMode() really should setup their own _videoMode.hardware* settings. Assuming the overlay will always match the hardware is flawed logic on devices with fixed hardware screens.
* Just done for the GPH backend for now to cut down on the regresion risk to other backends near the 1.4.0 release cycle.
The improvements in this commit are mostly code formatting, variable
abstraction, and in one case, a performance enhancement as calculations
were made a one-time fire rather than being run with every mouse move
event.
While the right-click was working in most games, the
weapon-switching in Full Throttle wasn't registering the click.
Holding the button down for 50ms instead of immediately firing
the mouseup fixes the issue.
The package version must be incremented for each new WebOS
release, due to the device needing a new version to install.
Whenever the ScummVM version is raised, this can be reset to 0.
Changing to 0 in anticipation of ScummVM 1.4.0.
This is a near-rewrite of the WebOS event system to take
advantage of multitouch, with which all WebOS devices are
outfitted. This commit also marks full compatibility with the
HP TouchPad, or any future tablet device without a hardware
keyboard.
Controls:
- Left click: Single-tap once
- Right click: Put one finger on screen, single-tap another
- Middle click: Put two fingers on screen, single-tap another
- Menu: Swipe two fingers down
- Show keyboard: Swipe two fingers up
- Touchpad Mode:
- Swipe two fingers to the right to toggle
- When off (default) mouse will move to the location tapped
- When on, mouse will move relative to its current position
- Autodrag Mode:
- Swipe three fingers to the right to toggle
- When on (default), touching the screen and holding still
for a half-second will initiate a left-mouse button hold.
Useful for games like COMI and FT.
- When off (or on) a double-tap will initiate a left-mouse
button hold.
- Escape key: Swipe two fingers left
- Space bar (pause): Swipe three fingers down
This is a mass commit for the following items:
- Conversion of mixed and unaligned spaces/tabs to tabs
- Moved static globals in webos_events to class members
- Corrected variable naming convention to use underscores
- Added a constructor to WebOSSdlEventSource to initialize
variables.
- Changed SDL getWidth and getHeight calls to getOverlayWidth
and getOverlayHeight to support larger form factors (such
as the HP TouchPad).
- Removed unnecessary static getMillis() declaration and
changed existing code to use the built-in getMillis().
On Mac OS X (Darwin), there are minor differences in the 'sed'
and 'install' tools that require slightly different usage. This
distinction has been made in webos.mk, made possible by an
additional flag in ./configure.
This should hopefully make sure we are always having the correct alignment set
up. This might fix bug #3435655 "OpenGL display corruption with various Sierra
games Daily B.".
Now only 320x200 and 640x400 will result in aspect ratio correction to be used
if the user requested it. This should fix some strechting in Myst/Riven.
This should help fix a lock up on window managers, which will try to force the
ScummVM window to a certain size, by just requesting the same size over and
over again.
Now we get black borders even in windowed mode when the aspect of the window
does not match the aspect of the game screen (and we are not in "normal" mode),
but that is usually the same in video players too, so shouldn't be too bad.
The bug in question is "SDL/OpenGL: Crash when switching renderer backend". To
fix it I added a stupid graphics state copying to the SDL backend, in case the
graphics manager is switched. The implementation of this is considered a pure
workaround, no one should ever do it like this in reality... I just want to
die when looking at this... Not sure why I actually committed it.
Anyway it at least makes the OpenGL backend testable for those who do not
want to fiddle with the config file directly.
This makes the name removal consistent with the timer proc removal.
It seems we only allow a specific timer proc being added once anymore though.
So this should not change too much right now.
This should fix#3389673 "LOOM: CD-Version crashes at start". It also fixes the
same error showing up for me in Monkey CD.
The doc changes in 4c7958450f claims the name is used for the event
recorder, but as far as I can tell it is not used right now. Thus depending on
how it is used the behavior of SCUMM removing and adding the same timer aagain
*might* cause problems.
In any way we need to remove the name in removeTimerProc, else RTL + launching
the same game again would be broken too.
This gets rid of the hacks, where SdlEventSource added events with custom type
numbers to pass SDL_VIDEOEXPOSE and SDL_VIDEORESIZE to the graphics manager.
Furthermore it get rids of the uninituitive and hard to trace way of assigning
the proper mouse coordinates to mouse related events. Formerly it passed the
real screen coordinates through the even dispatching api to the graphics
manager (at least hopefully ;-) and let that handle creating a new event with
the proper coordinates. Now instead SdlEventSource handles the proper
coordinate setup itself.
Since this is a behavior change and I can not test all the SDL based small
devices ports this commit might break compilation for them and more serve it
might also break mouse position behavior. If any of that occurs I am sorry
about it.
Moved UpdateManager related code from backends/modular-backend.* to
common/system.*. Added switch --enable/disable-updates to be able
to disable updates support generally.
* Include directory nodes in FSList sent to detectGames
- This is required for correct detection of toon.
* Don't add / at the end of directories found in getChildren
- It looks like that behaviour was removed from posix-fs a long
time ago, and now there's apparently code depending on directories
_not_ having a / at the end of their name...
* Treat games detected in subdirs as duplicates
- This is a workaround for a detection bug in toon; it will incorrectly
detect the game in the MISC subdirectory as well.
* Don't avoid directories called "install" in the game selector
- I don't know if the original reason for ignoring "install" is still
valid, but the code for doing do so was broken anyway.
Changed the default values from "false" to "true" as current devices are
fast enough to handle this. It's still possible to change the values to
"false" if the device isn't fast enough.
Silences the clang warning:
static data member specialization of '_singleton' must
originally be declared in namespace 'Common'; accepted as a C++0x
extension [-Wc++0x-extensions]
Wrapping "namespace Common {}" around the macro assignment causes clang
to complain about a spurious semicolon, and removing the semicolon at
the end of the macro causes some editors to misbehave.
Changing the requirement of using the macro in one namespace (the
global) to another (Common) seems a small price to pay to
silence a warning.
Hidden folders (such as the recycle bin or temporary hidden folders) will no longer be visible in the file/folder browser (as is the case on the Posix and related backends)
We bypass SDL_WM_SetIcon and setup the window icon using the embedded icon, with the default path as a fallback.
This allows us to use an antialised icon with alpha transparency (which the default included icon doesn't have) on Windows XP and later
The Windows taskbar manager uses VerSetConditionMask and VerifyVersionInfo to check for Windows 7 or later
before enabling the taskbar integration features. Those functions did not appear until Windows 2000, so we
have to check for them at runtime.
This tries to make our code a bit more compliant with our code formatting
conventions. For future use, this is the command I used:
git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//'
We now look for an iconsPath configuration variable with the path to the icons folder.
In addition, we look if there is an "icons" subfolder (useful when using extrapath to store icons)
This commit corrects a number of minor issues and adds warnings
for when the desired output parameters given to SDL_OpenAudio()
don't match the obtained.