After calling enterFullScreenMode on the GL view, it becomes the "key"
window, meaning it gets all of the input. This is problematic as that
view doesn't forward the input on to the input driver.
- (database_info.c) Optimizations for database_info_build_query_enum() -
it would call strlcat at the very least 3 times, normally more than that.
Every strlcat call is at least one or more strlens. Reduce it all down
to manual string concatenation and one strlcat
- (database_info_build_query_enum) - always NULL terminates string so no need for NULL termination done by callee
* (menu_displaylist) use smaller strings for basename paths, remove one unnecessary string
in menu_displaylist.c function
- (disk_index_file.c) Avoid another trivial string concatenation by doing
it manually after fill_pathname_join_special
- (fill_pathname_join_delim) since fill_pathname_join_delim() now has a return value, use it for
string concatenation
- (platform_unix) - Use BUFSIZ as size for a buffer in system_property_get
- some other trivial strlcat usage replacements
* (Wayland) Show window early to get screen info
* Report current monitor size on initial get_video_size call
* Fullscreen to monitor selected in settings
* Fullscreen on current monitor when setting is set to automatic
* Fallback to shm_open when memfd_create is not supported
* Report current monitor size on initial get_video_size call
* Fullscreen to monitor selected in settings
* Fullscreen on current monitor when setting is set to automatic
Currently each time a screen resolution or setting change occurs, fbdev_destroy, fbdev_init and fbdev_set_mode are called in sequence, trying to destroy context and surface (though context pointer seems to remain unchanged) and create again both of them.
However it seems something is wrong with egl_destroy, as after the call fps drops from 60 to 33fps in GUI with huge performance impact, at least with libmali.
Philosophy is changed with this commit to avoid destroying and creating context and surface each time (creation only occurs in fbdev_init and egl_destroy is called only if retroarch is shutting down).
As a minor modification, framebuffer is resetted to 0 on retroarch shutdown to avoid any chance of freezed screen effect.
-In case yoffset is not set=0 by the driver (which seems to occur randomly on certain configurations), on next set_video_mode call screen freezes and cannot be updated. Condition to set yoffset to 0 if current value is >0 is added as fix.
-If setterm is not available, sh error occurs in the shell on gfx_ctx_mali_fbdev_destroy call. Condition based on setterm availability is added to avoid this.
-If pixclock from driver is not available (=0), divide by 0 occurs when trying to calculate refresh rate. Condition is added as a fix, if pixclock=0 refresh rate is set as 60.
* force angle to render at 1080p regardless of screensize as the output is 1080p regardless of screensize.
This fixes an issue where at 4k any angle output would be zoomed into a corner
* set resolution based on display resolution (auto 4k)
* set driver to d3d11 if booting with opengl
* reset width and height of output on boot to match display
Co-authored-by: Tunip3 <tunip3@users.noreply.github.com>
Most DEs have the tendency to lose focus when monitor is getting swapped or the resolution changes.
That causes X11 exiting fullscreen and setting a lower resolution to fit desktop.
Pushing the window back to top, automatically fixes that and X11 enforces fullscreen again and new max resolution.
Additionally, XConfigure events are now checked and preferred over XGetWindowAttributes.
That saves several to hundreds μs per frame.
mode->vrefresh is a display-only value and should not be used for calculations
the drm context is now able to differentiate between, for example, 640x480@60.00 and 640x480@59.92 when setting the video mode
This keeps the tradition DRM driver along with the OGA one. The probe
function skips the driver if the screen is non rotated to fall back to
the regular DRM driver. This is being upstreamed from the Lakka repo.
* (Metal/WindowListener) Fix duplicate symbol errors by
moving implementation of WindowListener to cocoa_common.m
* (Apple) Cleanup some conditionals
* (Cocoa) Cut down on OSX ifdefs in Cocoa-specific code