summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
Commit message (Collapse)AuthorAgeFilesLines
* internal: introduce new types to avoid unsigned int rollover and signed int ↵Tom Englund2024-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | overflow (#7216) * framebuffer: avoid gluint overflow GLuint was being initialized to -1 and rolling over to unsigned int max, its defined behaviour but very unnecessery. add a bool and use it for checking if allocated or not. * opengl: avoid gluint rollover -1 rolls over to unsigned int max, use 0xFF instead. * core: big uint64_t to int type conversion there were a few uint64_t to int implicit conversions overflowing int and causing UB, make all monitor/workspaces/windows use the new typedefs. also fix the various related 64 to 32 implicit conversions going around found with -Wshorten-64-to-32
* renderer: fixup nvidia driver version checksVaxry2024-08-071-1/+1
|
* renderer: guard layer in renderLayerVaxry2024-08-071-0/+3
| | | | ref #7181
* renderer: Explicit sync fixes (#7151)Vaxry2024-08-061-66/+121
| | | | | Enables explicit sync by default for most platforms `misc:no_direct_scanout` -> `render:direct_scanout`
* core/surface/buffer: Buffer lock/release fixes (#7110)Vaxry2024-07-311-7/+7
|
* internal: refactor fullscreen states (#7104)MightyPlaza2024-07-311-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * refactor fullscreen modified: src/Compositor.cpp modified: src/Compositor.hpp modified: src/config/ConfigManager.cpp modified: src/config/ConfigManager.hpp modified: src/debug/HyprCtl.cpp modified: src/desktop/LayerSurface.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/desktop/Workspace.cpp modified: src/desktop/Workspace.hpp modified: src/events/Windows.cpp modified: src/helpers/Monitor.cpp modified: src/layout/DwindleLayout.cpp modified: src/layout/DwindleLayout.hpp modified: src/layout/IHyprLayout.cpp modified: src/layout/IHyprLayout.hpp modified: src/layout/MasterLayout.cpp modified: src/layout/MasterLayout.hpp modified: src/managers/KeybindManager.cpp modified: src/managers/KeybindManager.hpp modified: src/managers/input/IdleInhibitor.cpp modified: src/managers/input/InputManager.cpp modified: src/managers/input/Swipe.cpp modified: src/protocols/ForeignToplevelWlr.cpp modified: src/render/Renderer.cpp modified: src/render/decorations/CHyprGroupBarDecoration.cpp * clean up modified: src/config/ConfigManager.cpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.hpp modified: src/desktop/Workspace.cpp modified: src/events/Windows.cpp modified: src/managers/KeybindManager.cpp modified: src/managers/input/Swipe.cpp * fix mapWindow fullscreen modified: src/events/Windows.cpp * fix typo modified: src/desktop/Workspace.cpp * add fullscreenstate modified: src/config/ConfigManager.cpp modified: src/events/Windows.cpp * change syncFullscreen to lower modified: src/config/ConfigManager.hpp * initialize fs state modified: src/desktop/Window.hpp
* output: minor tearing fixesVaxry2024-07-301-5/+2
|
* output: submit damage to kmsVaxry2024-07-301-0/+2
|
* renderer: use session lock alpha for rendering lacking locksvaxerski2024-07-271-2/+3
|
* renderer/layer-shell: use explicitly set exclusiveEdge (#6984)Sam Lakerveld2024-07-221-3/+4
|
* surface: fixup logical damage size calculationsVaxry2024-07-221-1/+1
| | | | fixes #6618
* compositor: ignore setting surface scanout if DS is disabledVaxry2024-07-211-1/+1
|
* renderer: drop redundant spammy trace logVaxry2024-07-211-3/+1
|
* Core: Move to aquamarine (#6608)Vaxry2024-07-211-292/+305
| | | | | | | | | | | | | | Moves Hyprland from wlroots to aquamarine for the backend. --------- Signed-off-by: Vaxry <vaxry@vaxry.net> Co-authored-by: Mihai Fufezan <mihai@fufexan.net> Co-authored-by: Jan Beich <jbeich@FreeBSD.org> Co-authored-by: vaxerski <vaxerski@users.noreply.github.com> Co-authored-by: UjinT34 <41110182+UjinT34@users.noreply.github.com> Co-authored-by: Tom Englund <tomenglund26@gmail.com> Co-authored-by: Ikalco <73481042+ikalco@users.noreply.github.com> Co-authored-by: diniamo <diniamo53@gmail.com>
* session-lock: send `locked` after the lock screen is properly rendered (#6850)Junxuan Liao2024-07-131-0/+3
| | | | | | | | | | The protocol says: > The locked event "must not be sent until a new "locked" frame (either from a > session lock surface or the compositor blanking the output) has been presented > on all outputs and no security sensitive normal/unlocked content is possibly > visible". This helps users ensure the screen is properly locked before suspending the machine. (e.g. with swaylock --ready-fd)
* core: Improve handling of window properties (#6776)MightyPlaza2024-07-111-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * add mWindowProperties modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp * support int values modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp * create m_sWindowData modified: src/Compositor.cpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/layout/DwindleLayout.cpp modified: src/layout/IHyprLayout.cpp modified: src/layout/MasterLayout.cpp modified: src/managers/AnimationManager.cpp modified: src/managers/KeybindManager.cpp modified: src/managers/XWaylandManager.cpp modified: src/render/OpenGL.cpp modified: src/render/Renderer.cpp modified: src/render/decorations/CHyprBorderDecoration.cpp modified: src/render/decorations/CHyprDropShadowDecoration.cpp modified: src/render/decorations/CHyprGroupBarDecoration.cpp * simplify some properties modified: src/Compositor.cpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/managers/KeybindManager.cpp * store multiple values in CWindowOverridableVar modified: src/Compositor.cpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/layout/IHyprLayout.cpp modified: src/managers/AnimationManager.cpp modified: src/managers/KeybindManager.cpp modified: src/managers/XWaylandManager.cpp modified: src/render/OpenGL.cpp modified: src/render/Renderer.cpp modified: src/render/decorations/CHyprBorderDecoration.cpp modified: src/render/decorations/CHyprDropShadowDecoration.cpp modified: src/render/decorations/CHyprGroupBarDecoration.cpp * clean up modified: src/Compositor.cpp modified: src/Compositor.hpp modified: src/config/ConfigManager.cpp modified: src/config/ConfigManager.hpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/layout/DwindleLayout.cpp modified: src/layout/IHyprLayout.cpp modified: src/layout/IHyprLayout.hpp modified: src/layout/MasterLayout.cpp modified: src/managers/KeybindManager.cpp * use SET_PROP priority for exec rules modified: src/config/ConfigManager.hpp modified: src/desktop/Window.cpp * add default value modified: src/Compositor.cpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/layout/IHyprLayout.cpp modified: src/managers/KeybindManager.cpp modified: src/managers/XWaylandManager.cpp modified: src/render/OpenGL.cpp modified: src/render/Renderer.cpp modified: src/render/decorations/CHyprBorderDecoration.cpp modified: src/render/decorations/CHyprDropShadowDecoration.cpp modified: src/render/decorations/CHyprGroupBarDecoration.cpp * add setprop toggle modified: src/config/ConfigManager.hpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp * add setprop toggle modified: src/debug/HyprCtl.cpp * make window rules functional modified: src/config/ConfigManager.cpp modified: src/desktop/Window.cpp * minor fixes modified: src/Compositor.cpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.hpp * properly clean layout data modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/layout/DwindleLayout.cpp modified: src/layout/IHyprLayout.cpp modified: src/layout/IHyprLayout.hpp modified: src/layout/MasterLayout.cpp * remove newline modified: src/events/Windows.cpp * fixes modified: src/config/ConfigManager.hpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp * use CamelCase modified: src/Compositor.cpp modified: src/debug/HyprCtl.cpp modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/layout/IHyprLayout.cpp modified: src/managers/AnimationManager.cpp modified: src/managers/KeybindManager.cpp modified: src/managers/XWaylandManager.cpp modified: src/render/OpenGL.cpp modified: src/render/Renderer.cpp modified: src/render/decorations/CHyprBorderDecoration.cpp modified: src/render/decorations/CHyprDropShadowDecoration.cpp modified: src/render/decorations/CHyprGroupBarDecoration.cpp
* renderer: don't skip back background on preBlurQueuedVaxry2024-07-021-1/+1
| | | | fixes #6332
* renderer: don't use the surface counter in popup iterationsVaxry2024-06-251-1/+1
| | | | fixes #6663
* renderer: shrink occlusion rect if blur is usedVaxry2024-06-211-3/+9
| | | | | | if we are blurring, we cannot be sure whether the occluded region won't be included in the expanded damage. If it is, we'd get dark shimmers. fixes #6547
* damageRing: move to hyprland implVaxry2024-06-191-6/+10
| | | | A small wlroots utility we were still using.
* core: Move to hyprutils for MathVaxry2024-06-191-9/+7
| | | | | | Moves CRegion, CBox and Vector2D over to hyprutils. Requires hyprutils>=0.1.4
* subcompositor/renderer: fixup handling of subsurfaces below the main oneVaxry2024-06-171-1/+11
| | | | some apps (notably vlc 4) place a subsurface below the main surface (which is kinda cursed) but we have to accomodate for that
* vrr: add option to fix mouse breaking vrr (#6483)UjinT342024-06-141-2/+3
| | | | | | | | | | | | | | | * option to fix mouse breaking vrr * skip damage on mouse move * remove this-> & cleanup * add cursor:min_refresh_rate to avoid cursor freezing * run clang-format --------- Co-authored-by: UjinT34 <ujin@uvpn.ru>
* core: fix a few small memory leaks on exit (#6470)Tom Englund2024-06-131-0/+5
| | | | | | | | | | | | | | | | | | | | * renderer: add destructor and destroy event source add destructor and destroy the event source. one less leak on exit of compositor reported by asan. * compositor: cleanup eventloop on exit destruct hyprctl to release the event sources, and properly cleanup the event loop on exit of compositor. less leaks on exit reported by asan * threadmgr: destroy event source on destruction destroy the event source on destruction. * eventloopmgr: reset eventloopmgr on exit aswell reset the eventloopmanager on exit of compositor and free the leaking last idle frame on monitor destroy.
* renderer: properly software lock cursors with zoom_factor (#6434)Ikalco2024-06-121-7/+9
|
* output: remove wl_output globals for mirrored displaysVaxry2024-06-101-1/+4
| | | | ref #6387
* renderer: allow custom uv for surface no-blur passesVaxry2024-06-081-2/+2
|
* wayland/core: move to new impl (#6268)Vaxry2024-06-081-118/+137
| | | | | * wayland/core/dmabuf: move to new impl it's the final countdown
* xwayland: move to hyprland impl (#6086)Vaxry2024-05-251-7/+3
|
* wl-data-device: move to hyprland implVaxry2024-05-141-14/+3
|
* xdg-shell: move to new implVaxry2024-05-141-9/+18
|
* wl_seat: move to hyprland implVaxry2024-05-141-2/+2
|
* cursor: minor fixes for unhiding surfacesVaxry2024-05-141-3/+0
| | | | | | the surface equality check is done in CPointerManager, the one in renderer can be wrong fixes #5975
* renderer: avoid locking during renderingVaxry2024-05-101-9/+8
| | | | | | it can trigger pointermgr to render which fucks up our pass fixes #5998
* presentation-time: move to new implVaxry2024-05-101-2/+10
|
* config: move various cursor-related vars to cursor:Vaxry2024-05-091-4/+4
|
* layer-shell: move to new implVaxry2024-05-091-17/+27
| | | | Also bumps the hw-s dep
* cursor: move to a hyprland implVaxry2024-05-091-50/+22
| | | | | | | This moves wlr_cursor to a completely new impl mostly under CPointerManager Also adds beginSimple to OpenGL for simple render passes (e.g. cursor)
* renderer: deny solitary during a session lockVaxry2024-05-061-1/+1
| | | | | | closes #5906 fixes #5899
* internal: new shared_ptr and weak_ptr implementation (#5883)Vaxry2024-05-051-3/+3
| | | | | | | | | | | moves std::shared_ptrs to a new implementation Advantages: - you can dereference a weak_ptr directly. This will obviously segfault on a nullptr deref if it's expired. - this is useful to avoid the .lock() hell where we are 100% sure the pointer _should_ be valid. (and if it isn't, it should throw.) - weak_ptrs are still valid while the SP is being destroyed. - reasoning: while an object (e.g. CWindow) is being destroyed, its `weak_ptr self` should be accessible (the sp is still alive, and so is CWindow), but it's not because by stl it's already expired (to prevent resurrection) - this impl solves it differently. w_p is expired, but can still be dereferenced and used. Creating `s_p`s is not possible anymore, though. - this is useful in destructors and callbacks.
* output-management: move to new implVaxry2024-05-031-66/+6
|
* sessionLock: call wlr_surface_map/_unmap on the surface manuallyVaxry2024-04-301-1/+1
| | | | | | fixes unmapped subsurfaces etc ref #5816
* session-lock: move to new implVaxry2024-04-301-3/+4
|
* layerSurface: refactor/move to a memory-safe implVaxry2024-04-301-12/+13
| | | | | Makes all the pointers smart to avoid memory issues Refactors layerSurface code to live inside desktop/layersurface
* wlr-output-power: move to new implVaxry2024-04-291-0/+4
|
* internal: Window storage rework - part 1 (#5762)Vaxry2024-04-271-42/+42
| | | | | | | | | | | | | | | | | * Window storage rework - part 1 * format * remove useless include * fix pch * format * fix crash in dwindle * fix vram leak * prefer .expired() for bool checks
* renderer: fix rounding of the size of fractionally scaled monitors (#5748)eriedaberrie2024-04-251-1/+1
|
* renderer: Fix mirrored displays when transformed and preserve aspect ratio ↵Virt2024-04-241-7/+18
| | | | | | | | | | | | | (#5697) * renderer: transform mirror buffer and preserve mirror aspect ratio * renderer: render mirrors directly from offloadFB * renderer: fix formatting * renderer: use monitorMirrorFB again, but properly damage mirrors * renderer: clean mirrors after reload and support cursor zoom mirroring
* renderer: fix safety around sendFrameEventsToWorkspaceVaxry2024-04-231-1/+4
| | | | ref #5718
* renderer: send frame events to apps on empty damage rendersVaxry2024-04-231-2/+25
| | | | fixes #5711