Age | Commit message (Collapse) | Author |
|
Added constructor and assignment operator for CharString
from const char* to simplify memory management when working with
utf8/ascii strings for APIs taking char*.
Reworked OS_X11::set_context to use CharString and avoid some manual
memory management.
|
|
Small fixes, mostly duplicated code
|
|
[Clean up] Removed unused/unnecessary methods.
|
|
|
|
|
|
|
|
GLES2 is not designed to be a drop-in replacement for the GLES3 backend,
so the fallback mode has to be used knowingly. It *can* make sense for
simple projects which make sure to handle the differences between both
rendering backends, but most users should stick to one supported backend.
By making it opt-in, we can now use this parameter to define whether to
export ETC textures to Android and iOS when using GLES3 + Fallback.
When using GLES3 without Fallback on Android, set the proper min GLES
version in the AndroidManifest.
Also made the option boolean and renamed it for clarity and to avoid
conflict with the previous String option (which would always evaluate as
"true" otherwise).
Fixes #26569.
|
|
|
|
Fixes #25826.
Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
|
|
-Fixed a bug where etc textures were imported broken
|
|
|
|
Detect when primusrun/optirun is in use
|
|
It seems that bumblebee doesn't like us creating multiple GL contexts
to avoid this we now detect whether we're running with this software
and don't do anything.
|
|
This fixes #25852
|
|
This allows most demos to run without any ubsan or asan errors. There
are still some things in thirdpart/ and some things in AudioServer that
needs a look but this fixes a lot of issues. This should help debug less
obvious issues, hopefully.
This fixes #25217 and fixes #25218
|
|
We fork off twice once with and once without DIR_PRIME=1 set. We
then use the vendor string to determine what GPU to use.
We prefer (in order)
1) AMDGPU/AMDGPU-PRO/NVidia non-free driver
2) Intel driver
3) Nouveau
4) Software rendering
If a driver can't be detected it will default to DRI_PRIME=0
|
|
Don't enable DRI_PRIME if nouveau is loaded
|
|
Happy new year to the wonderful Godot community!
|
|
|
|
|
|
|
|
The current system for capturing the mouse and generating motion events on X11
has issues with inaccurate and lopsided input. This is because both
XQueryPointer and XWarpPointer work in terms of integer coordinates when the
underlying X11 input driver may be tracking the mouse using subpixel
coordinates. When warping the pointer, the fractional part of the pointer
position is discarded.
To work around this issue, the fix uses raw motion events from XInput 2. These
events report relative motion and are not affected by pointer warping.
Additionally, this means Godot is able to detect motion at a higher resolution
under X11. Because this is raw mouse input, it is not affected by the user's
pointer speed and acceleration settings. This is the same system as SDL2 uses
for its relative motion.
Multitouch input on X requires XInput 2.2. Raw motion events require
XInput 2.0. Since 2.0 is old enough, this is now the minimum requirement to
use Godot on X.
|
|
Added double clicking to all buttons on Linux and Javascript
|
|
Unified button mask behavior across platforms
|
|
[x11] Use "application/config/name" for WM_CLASS
|
|
multiple screens
|
|
This mirrors behavior on Windows and MacOSX where Godot tries to default
to a dGPU if it exists. This doesn't work for Nvidia optimus yet but
this can maybe be added later.
|
|
Contrarily to what #23434 assumed, this is not a memory leak,
the VisualServerRaster instance is passed as a parameter to
VisualServerWrapMT's constructor.
Fixes #23437.
|
|
Avoid leaking an extra instance when using threads. Also fix threaded
loading issues on Android and iOS.
|
|
|
|
Some of this code has been re-organized.
f
|
|
If it can be compared to a boolean, it can be evaluated as one in-place.
|
|
|
|
|
|
Fix set_default_cursor_shape interaction with Control nodes
|
|
|
|
Do not call `set_cursor_shape` when the cursor is inside the `Control` node.
Make it work for x11 in MOUSE_MODE_CONFINED.
|
|
[Docs] Add class ref for Input::set_default_cursor_shape
|
|
Fixes to mouse mode confined and captured
|
|
When resizing an X11 window wait for the WM to process our request
|
|
Update X11 global mouse position at startup
|
|
This allows more consistency in the manner we include core headers,
where previously there would be a mix of absolute, relative and
include path-dependent includes.
|
|
On X11 when we send an XResizeWindow request to the X server it is happy
to say it is done when the request has been handed over to the window
manager. The window manager itself may however take some time to
actually do the resize. Godot expects that a resize request is
immediate. To work around this issue we could implement the whole
_NET_WM_SYNC_REQUEST protocol. However this protocol does not fit very
well with the way we currently process X events and would when
implemented in the current framework still cause a 1 frame delay between
a resize request and the actual resize happening.
This fixes #21720
|
|
When we start the engine we haven't yet gotten any X11 motion events so
we don't yet know where our mouse cursor is located. Instead we now
query the X server for this information when we start and update the
appropriate values.
In addition when we move the window we also update the mouse position
based off of X server knowledge as we will also not have received any
mouse motion events.
this fixes #8145 (for X11 only)
|
|
These modes will work on Linux in the same way as Windows.
|
|
Add check for negative values.
Fixes #21721
|
|
Cursor hotspot must be inside image on Linux. Adding validation for all
platforms for consistency.
|
|
Fall back to GLES2 if GLES3 is not working
|
|
When setting an icon that is too large previously Godot would die with a
X Error of failed request: BadLength error. To avoid this we install an
error handler right before we set an icon. If the error handler triggers
we halve the icon size until it works or until we've reached a 0 size on
either width or height.
We print a warning when this happens to alert developers.
This fixes #19716
|
|
This adds a static is_viable() method to all rasterizers which has to be
called before initializing the rasterizer. This allows us to check what
rasterizer to use in OS::initialize together with the GL context
initialization.
This commit also adds a new project setting
"rendering/quality/driver/driver_fallback" which allows the creator of a
project to specify whether or not fallback to GLES2 is allowed. This
setting is ignored for the editor so the editor will always open even if
the project itself cannot run. This will hopefully reduce confusion for
users downloading projects from the internet.
We also no longer crash when GLES3 is not functioning on a platform.
This fixes #15324
|