Age | Commit message (Collapse) | Author |
|
|
|
This reduces confusion when reading different drivers.
|
|
This means the code depended that the caller did this for us
before MakePalette() is executed, which is neither a
requirement nor a promise the code makes.
|
|
When the wayland SDL video driver is used, an EGL context is
created in the main thread. It is not allowed to update this
context from another thread, which is exactly what our draw-thread
is trying.
The other solution would be to move all of SDL into the
draw-thread, but that would introduce a whole scala of different
problems.
The wayland SDL backend is significantly faster than the
X11 SDL backend, but there is a performance hit nevertheless.
|
|
* Fix: Missing or needed spaces
* Codechange: Remove space
* Codechange: Remove space
* Codechange: More missing spaces
* Codechange: Missing spaces
* Codechange: Remove space
* Codechange: Remove space
|
|
The original code is "strictly correct", but just reads really
weird, and we use MakeDirty() in several other places instead too.
|
|
It now follows more what the Win32 driver does, and has far less
exceptions and special casing.
MakePalette creates the Palette and prepares surface.
UpdatePalette updates the Palette.
CheckPaletteAnim checks if UpdatePalette needs to be called and
marks the whole screen dirty so DrawSurfaceToScreen will do a
full redraw.
|
|
All SDL_NNN errors print SDL_GetError, except for this one place.
|
|
This makes the code a bit more readable, as both intentions are
more clear, and there is less nesting in the main function.
|
|
|
|
|
|
|
|
|
|
|
|
There was no default resolution fallback, and the code was different
from the win32 driver. It is now named the same and much more
similar.
|
|
This is already done by CMake: if SDL2 is not detected, this file
is not included.
|
|
Sometimes it returned an usererror(), sometimes Start() failed.
Now it always fails on Start(), so nothing else has to check again
what blitter is used.
AfterBlitterChange() can never change to a 0bpp, so it is sufficient
to guard this with an assert().
|
|
(#8581)
|
|
start. By default use the display where the mouse cursor is. (#8572)
|
|
|
|
|
|
|
|
This mode doesn't wrap the mouse constantly, but requests SDL
to lock the mouse pointer. This is needed, as with Emscripten
you are not allowed to change the mouse poisition (only to lock
it into place).
|
|
Emscripten compiles to WASM, which can be loaded via
HTML / JavaScript. This allows you to play OpenTTD inside a
browser.
Co-authored-by: milek7 <me@milek7.pl>
|
|
This commit prepares for the next commit, as Emscripten needs to
have a way to trigger a single iteration of the main loop. To
keep the real changes more clear, this commit only unrolls the
loop, and makes no changes to the logic itself.
|
|
This fixes a bug that can reproduced with these steps:
* Start openttd in fullscreen mode
* Turn off fullscreen mode
* Try to resize the window. The window can't be resized.
|
|
emphasise differences.
|
|
|
|
SDL_GetVideoDriver(0) returns name of first video driver included in
the library, not the driver currently used.
SDL_GetCurrentVideoDriver() does what we want here.
|
|
|
|
In particular this fixes handling of the shift key
|
|
SDL_Keysym::sym is not suitable for checking whether the character
is printable or not
|
|
SDLK_PAGEUP and SDLK_PAGEDOWN are not sequential
They must have separate entries in _vk_mapping
|
|
SDL_Keysym::scancode is a SDL_SCANCODE_* constant, not a raw scan code
|
|
Closes #7784.
|
|
This function requires libSDL 2.0.5 or higher. It looks like we don't
need to use it, and can just use the original SDL_CreateRGBSurface(),
with the masks set to 0, to trigger the default 8-bit format, which is
SDL_PIXELFORMAT_INDEX8.
Closes #7785
Note: this code path is activated by using an 8-bit blitter, like:
./bin/openttd -b 8bpp-simple
|
|
|