Age | Commit message (Collapse) | Author |
|
|
|
Previously, a C-style cast was used to convert a
Common::Array<Plugin *>, populated with pointers to StaticPlugin
and DynamicPlugin instances, to a
Common::Array<PluginSubclass<T> *>, but PluginSubclass<T> is a
*sibling* class to StaticPlugin/DynamicPlugin, so this cast was
invalid and the results undefined. The methods for retrieving
subclasses of plugins can't be easily changed to just generate an
array of temporary wrapper objects that expose an identical API
which dereferences to the preferred PluginObject subclass because
pointers to these objects are retained by other parts of ScummVM,
so the wrappers would needed to be persisted or they would need to
just re-expose the underlying Plugin object again. This indicated
that a way to solve this problem is to have the callers receive
Plugin objects and get the PluginObject from the Plugin by
explicitly stating their desired type, in a similar manner to
std::get(std::variant), so that the pattern used by this patch to
solve the problem.
Closes gh-1051.
|
|
UpdateManager
This can happen when Sparkle was not found during configure which results
in USE_UPDATES being defined but USE_SPARKLE not being defined.
|
|
Registering the OSDMessageQueue instance as an event source is now done
right after the event manager is initialised. This ensures that it is created in a
sensible place and not for example in another thread). Also registering the
event source is moved to a separate function instead of being in the constructor
to remove any issue in case some code tries to display a OSD Message very early
on (the instance would be created then, but it would be registered as an event
source later).
|
|
|
|
|
|
|
|
Nothing really major.
|
|
In most cases that's the right one to check. USE_CLOUD is defined when
either USE_LIBCURL or USE_SDL_NET are, which means if there is no curl,
USE_CLOUD still could be defined and linking errors would appear.
|
|
Available as LocalServer singleton. It's being started and stopped by
StorageWizardDialog. It doesn't handle clients yet, though.
|
|
It's needed to ::destroy() it in main().
|
|
It now terminates active Requests.
|
|
Also add CloudManager::testFeature(), because syncSaves() now works fine
and I don't want to break it again and again with my testing requests.
|
|
This commit adds:
* ConfMan's new "cloud" domain;
* CloudManager's init() method, where it loads keys from "cloud" configs
domain;
* CurlJsonRequest's addHeader() and addPostField() methods;
* temporary Storage's printInfo() method;
* DropboxStorage's implementation of printInfo(), which is using access
token and user id;
* DropboxStorage's loadFromConfig() static method to load access token
and user id from configs and create a Storage instance with those;
* temporary DropboxStorage's authThroughConsole() static method, which
guides user through auth process from the console.
So, in CloudManager's init() implementation ScummVM checks that there is
"current_storage_type" key in "cloud" domain of configs, and loads
corresponding storage if there is such key.
If there is no such key, ScummVM offers user to auth with Dropbox.
That's done through console, and thus it's temporary (it also requires
restarting ScummVM twice and manually editing config.ini file).
|
|
Adds USE_CLOUD in both configure and create_project.
|
|
This commit introduces Common::CloudManager, which can be accessed from
OSystem.
The backend for this manager is Cloud::Manager (defined in
backends/cloud/manager.h). It should load all users storages from
configs and provide access to current Storage instance. For now it just
creates a new one.
Cloud::Storage (backends/cloud/storage.h) provides an API to interact
with cloud storage, for example, create new directory or sync files.
Right now it's not ready and has only two dummy methods: listDirectory()
and syncSaves().
There is Cloud::Dropbox::DropboxStorage backend
(backends/cloud/dropbox/dropboxstorage.h) for Cloud::Storage. Right now
it implements both listDirectory() and syncSaves() with starting timer
task and handling it by printing out some JSON examples.
|
|
Would be changed soon.
|
|
This commit also adds CloudThread class, which work() method is called
every second by TimerManager.
Right now it prints JSON examples on the console, so that's why it's
introduced with SimpleJSON library.
|
|
Many of our systems currently generate significant amount of debug
output on deeper levels. Now, when your engine is using Debug Channels,
you might want to show that debug information only, which is currently
not possible, as the generic output will be mixed in your output.
Alternative solution would be to implement possibility to specify
per-channel debug levels.
|
|
Useful for devices where passing command line arguments is not possible.
|
|
COMMON: Fix wrong warning message
|
|
The error message was not correct.
When you add a game data dir to launcher and after do this
rename game data dir the error was wrong.
It said that the "path wasn't a directory",
the expected error message was
"Path does not exists" because we had changed.
How to solve this:
We split in two the validation of the path, first
we check if it's a existing path and then if the path is a directory.
if (!dir.exists())
err = Common::kPathDoesNotExist;
else if (!dir.isDirectory())
err = Common::kPathNotDirectory;
Solve Bug: 6765 Wrong error code if directory missing
|
|
Launched when ScummVM is run first time with updates feature.
|
|
This fixes engines (like AGI) which query the configuration options inside
their constructor.
|
|
A regression from f74ba29753de23bad9a07f531fc4c03ea3375594
|
|
This replaces the somewhat ugly use of the config manager to store
the chained games.
|
|
Instead of returning to the launcher, a game may now specify a list
of "chained" games and optional save slots. The first game is popped
from the list and started. Quitting still quits the entire ScummVM.
It seemed like the sensible thing to do.
|
|
This makes it consistant with other references to fullscreen.
|
|
|
|
|
|
This replaces the hardcoded addition of the game path in runGame in
base/main.cpp by an engine configurable one.
|
|
This is a (temporary) hack to assure that when the launcher is set up as an
SurfaceSDL graphics mode and the game is using an OpenGL graphics mode
everything will work as expected.
|
|
|
|
|
|
|
|
This singleton was omitted from fuzzie's memory leak fixes in 6bff611.
Thanks to Tomaz^ for spotting this.
|
|
The pull request in question is "Memory leak fixes".
|
|
|
|
This is used to set default settings for all custom game options when an
engine starts
|
|
This uses a helper function because TTFLibrary is internal.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|