Files
kaizen/wayland-protocols/xdg-shell.xml
SimoZ64 28d94e8b86 Squashed 'external/SDL/' changes from 8ec576dda..90fd2a3cb
90fd2a3cb Sync SDL3 wiki -> header
edd08771a wayland: Add xdg_toplevel v7 edge constraint support
113475acb wayland: Add multi-seat support
4093e4a19 Fixed process I/O redirection to NUL on Windows
c025fdbb7 Add the CREATE_NO_WINDOW flag for background processes
8a57c83ff Updated to GameInput v1.1
f35a2736b Don't reset the render target when invalidating GPU renderer cache state
47e52ab37 Sync SDL3 wiki -> header
6a3dbe34d Sync SDL3 wiki -> header
d84c000ac Sync SDL3 wiki -> header
98e76d283 Fixed conflict when linking both SDL and hidapi statically
f6db5ba4c Add Turtle Beach VelocityOne
a1016bd06 Allow 01-joystick-polling example to be resizable
60fb1b554 Fix IMU orientations for 8bitdo wireless 2 controller in bluetooth mode
b0860fb0c Disable EGL in Emscripten builds
f303ccca6 Updated the report size for Ultimate 2 Wireless firmware v1.02
0add03780 [Windows]: dialog: Add `OFN_OVERWRITEPROMPT` to save dialogs (#12782)
a390f5716 docs: improve man page generation
93ac1e689 Fixed non-XBox controllers being detected as Series X controllers
d29bb902f Don't treat the Keychron K1 Pro System Control keyboard as a joystick
ab57ef9d7 update sdlgenblit.pl after PR/12769
b0a0d236d fix sdlgenblit.pl so that it actually matches the generated source
0fdfa925f rename local pointer vars 'pixel' to 'pixels'
46c314cc3 Revert "bool is 4 bytes in Apple MacOS X 32 bit PPC ABI"
2abfb92c5 Sync SDL3 wiki -> header
97eddacd7 Use the actual value of EGL_PLATFORM_DEVICE_EXT if it's not defined
4c1a3ccd4 rename local vars 'pixel' to 'pixelvalue'
433704e77 rename 'pixel' params of SDL_GetRGB, SDL_GetRGBA and SDL_LookupRGBAColor
83b261ae8 Remove unused message box includes
cccad933a Updated version documentation to match SDL 3.x practice
adad7dcae x11/wayland: Ignore redundant restore and fullscreen leave requests when showing the window
d7d6d8e28 Sync SDL3 wiki -> header
f7b718883 Add SDL_CreateGPURenderer
5a59b5f32 bool is 4 bytes in Apple MacOS X 32 bit PPC ABI
3b9101768 pulseaudio: cleanup TLS every time we finish a threaded-mainloop callback.
646f1f243 x11: Only enable _NET_WM_SYNC_REQUEST for OpenGL windows
33f90f2e4 GPU Vulkan: Clean up in Submit in headless mode (#12744)
93b06cffd Sync SDL3 wiki -> header
c2c3a930b Add STRING suffix to SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_* string properties
44710a248 gpu: alpha-to-coverage support
d6d2c958a Move global event handlers to SDL_VideoInit
05939909d SDL_gpu.h: SDL_GetGPUDeviceProperties() is thread-safe.
1687bc746 Sync SDL3 wiki -> header
accd952c4 SDL_gpu.h: Another attempt to clean up SDL_GetGPUDeviceProperties() docs.
c5f369f55 Sync SDL3 wiki -> header
0c9eccd0e Sync SDL3 wiki -> header
906c6c751 GPU: Add missing error code to VkErrorMessages()
205c34c62 GPU: The D3D12 blit shaders are DXIL
300013cea GPU: Don't pass null properties to SDL_CopyProperties()
8ad64aba1 GPU: Remove subheadings from SDL_GetGPUDeviceProperties() docs
94ab2b76a Sync SDL3 wiki -> header
85281be78 Re-added text removed by the wiki bridge
b53e7b447 GPU Vulkan: Fix recursive Submit calls causing defrag to fail (#12718)
b1919783c Sync SDL3 wiki -> header
39a3b14df Renamed SDL_GetGPUDeviceDebugProperties() to SDL_GetGPUDeviceProperties()
ca613b9d8 x11: Send a restored event before entering fullscreen
667b706a9 x11: Don't set the hidden flag when minimizing windows
6430aed3d Removed SDL_XInputVersion, which isn't used
40e08ee7a Assume new XBox controllers have a share button
6bb16296b Added special handling for SDL_HINT_ANDROID_ALLOW_RECREATE_ACTIVITY
ebb52973e cmake: make SDL_CPU_xxx variable visible when using CMAKE_OSX_ARCHITECTURES
b4af01cd0 only build static library in some feature tests
756b455d3 Fixed building for Xbox One
25232c077 Sync SDL3 wiki -> header
f78aa4d8e GPU: Expose debug information from devices
008690d01 Sync SDL3 wiki -> header
df3282740 Note that you might get a different size window than you expect
ab34ea5a2 Fixed documentation for SDL_GL_*_SIZE
87d6beb89 Rename cmake/sdltargets.cmake -> cmake/sdlcommands.cmake
208ec1829 Update README-documentation-rules.md
5709466dd Sync SDL3 wiki -> header
b52140086 Note that the Emscripten window properties are strings
82b245d13 Added support for the HORI Taiko No Tatsujin Drum Controller
12ef57ede Sync SDL3 wiki -> header
735b68581 Fixed wiki reformatting
cc8ec6cf1 Handle global mouse state for Emscripten (#12669)
53d053279 Sync SDL3 wiki -> header
cbc26fe2c Add Emscripten window data to window properties
4aefde015 Only send sensor data if sensors are enabled for 8BitDo controllers
6d7827344 Return early in stead of goto
c3ce216c4 Fixed crash at shutdown on Windows
e87a00c07 tests: port failing SDL_Renderer test from pysdl2 to testautomation
10819273b tests: port failing SDL_Renderer test from pysdl2 to testautomation
ffbd434a1 tests: port failing window  test from pysdl2 to testautomation
2775e7a78 tests: port failing SDL_Rect tests from pysdl2 to testautomation
39eed1d23 tests: port failing SDL_Hint tests from pysdl2 to testautomation
366a5281b Fixed comment
79a41ca7f Implemented DEBUG_8BITDO_PROTOCOL
5922e2cb7 Corrected comment with 8BitDo controller report sizes
0d9ff082f 8BitDo HIDAPI driver cleanup
e236a48e1 8BitDo
4de396734 More clarification for high DPI support
36fc1c2c9 Fixed texture colorspace when creating a texture from a surface
512485869 fix vulkan vertex buffer indexing
2e494fda3 Clarify high DPI support and best practices
44faac292 Fixed A/B/X/Y buttons on Nintendo 3DS
38c2081ae Temporarily default SDL_HINT_JOYSTICK_HIDAPI_8BITDO off
bcacc37e3 Sync SDL3 wiki -> header
e18c6bd2e 8BitDo (#12661)
6b1d6bfbe wayland: Commit the confinement region upon creation
266ee41c8 wayland: Defer creating cursor confinement regions until the surface is mapped
cb1d79db3 Sync SDL3 wiki -> header
088ad66f7 Update include/SDL3/SDL_power.h
032d69602 Add performance disclaimer in `SDL_GetPowerInfo` documentation
0d04e9ea6 Fixed build
7bb95bde4 Set the alpha opaque when blending to an RGB format
8eb57c5a4 diskaudio: Use SDL_GetAudioFormatName instead of recreating it from scratch.
f05bb7aae diskaudio: Log the raw PCM's format during "device" open.
210b317d8 x11: Popup positions after constraining are in the window-relative space, not global
daa7a5ad7 Updated Visual Studio example projects
f7a89d19c fix missing AVFoundation in CMakeLists.txt
a23f97483 Temporarily disable DwmFlush()
536a1a236 coreaudio: Added some NULL pointer checks.
712c76fdc gamepad: Fix inability to disable SDL_EVENT_GAMEPAD_UPDATE_COMPLETE events
418acf629 Sync SDL3 wiki -> header
633b9f6fb Added SDL_SetRenderTextureAddressMode() and SDL_GetRenderTextureAddressMode()
eb918af3d video: fix surface leak when duplicating mjpeg
567dfd2eb examples/renderer/19-affine-textures: add metadata for examples.libsdl.org.
5ab1aef36 examples/renderer/19-affine-textures: blue background so you can see the cube.
87e6d2250 examples, affine-textures: fix RISC-OS build.
254f34808 examples/renderer/19-affine-textures: Flip coords so SDL logo is right-side up.
391545105 examples/renderer/19-affine-textures: Whole source file was indented one space.
2ebcee203 examples: added examples/renderer/19-affine-textures to CMakeLists.txt.
2207f6bc9 examples/renderer/affine-textures: Fixed compiler warnings.
83eea00d6 Create affine-textures.c
401aaf3d2 video: Revert unnecessary member assignment
eed94cb03 Updated link to PSP Hello World
be2f7f206 Sync SDL3 wiki -> header
0f27c3aab Added SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING
289f5cfdb touch: Don't call ResetTouch() if SDL_GetTouch() can't find a virtual device.
b00b08f83 touch: Keep state correct when removing virtual touch devices during quit.
09fff161e cocoa: Clear pending state on fullscreen switch failures
05d23cae7 cocoa: Re-add sync timeout
2e61b4165 Don't send relative motion while in a modal loop
4c035a1fd audio: Allow PipeWire and PulseAudio streams to migrate to other sinks.
f3d4e6fe5 Sync SDL3 wiki -> header
8e6eaf12a wayland: Expose wl_output objects on video displays
1f917d523 Sync SDL3 wiki -> header
00f316737 Progress bar comment changes
e28974124 Added mappings for the NSO N64/SEGA/SNES controllers
b88200b79 Fixed face buttons for the NSO SNES controller under the HIDAPI driver
f355c7f21 Allow the progress API to be used on all platforms
b45ed98ae Fix spelling mistake in documentation
716e33f10 x11: Send the _XWAYLAND_MAY_GRAB_KEYBOARD message when grabbing the keyboard
a5633ad0f Sync SDL3 wiki -> header
6cc00a31b WindowProgressState API getters and fixes (#12629)
b520cde18 cocoa: Properly set the pending fullscreen spaces state when in a transition
dd9b9d451 Check if GL_OES_EGL_image_external is supported before trying to use it
7ec13a2ea Document SDL_malloc alignment guarantees
ae17b04c0 alsa: Don't start the hardware until the device thread is ready to do work.
41636959d audio: Feed output devices immediately, instead of waiting upfront.
48d4104ec pulseaudio: Fixed typo in commented-out debug logging.
8cb303126 wayland: Fix global mouse position retrieval
d6f137b2b Added a note to tag the wiki when doing feature releases
7f927de1f x11: remove 'args' and 'ret' from SDL_X11_SYM macro
b6ca03611 Fixed mixed trigger and body rumble for Xbox controllers on Windows
c3a3a11db keyboard: Don't check text input on a null window
035d9179a WIN_SetWindowProgressState(): Unsupported parameter error message
c217663fb SDL_SetWindowProgressState(): Add parameter validation check for `state`
3fa1bd81f Fixed previous commit renaming {add,remove}AudioDevice to native{Add,Remove}AudioDevice
b8381b3a2 Sync SDL3 wiki -> header
fa0a86409 Additions to progress bar comments
721476033 SDL_SetWindowProgressValue(): Move value clamp from `WIN_SetWindowProgressValue()` to `SDL_SetWindowProgressValue()`
69ad66b01 Fixed error messages in GetTaskbarList()
a3be7a137 WIN_SetWindowProgressValue(): Fix value clamp
017783835 Native functions renamed: {add,remove}AudioDevice to native{Add,Remove}AudioDevice
6e875397f Proguard: remove onNativePen
027df89ed wayland: Scale accelerated relative pointer coordinates with emulated resolutions
f52f982b1 chore: rename integer mode field names
8407a1625 Sync SDL3 wiki -> header
7a10fcdcc Add progress bar support for Windows (#12530)
6b13d6910 Improve move/resize visual smoothness on Windows
4fcef9074 audio: hold floating point exceptions when using neon
b493e29a8 x11: Fix backwards _NET_WM_SYNC_REQUEST init check
2fbb58329 SDL_ClaimWindowForGPUDevice() should fail for transparent windows
bde49abdb GPU: Support swapchain buffer transparency in Vulkan
79081a178 cocoa: Fix zoom check when leaving fullscreen
03cdd297e video: Fix boolean logic for getting the pending window position
fbdb63797 Fixed build when virtual joysticks are disabled
758eb256b Fixed DebugLogRenderCommands() output
4ceb02434 We need to rebind D3D12 resources after updating them
3538abfb8 Revert "Don't update a texture twice in the same batch on D3D12"
0681d0881 Don't update a texture twice in the same batch on D3D12
ac5b2b610 Don't send text event while ctrl/alt is held on X11/Wayland
365b7837c add private definitions to SDL_build_config.h.cmake
817260c73 Updates SDL_SetEventFilter code snippet to SDL3
3fd61b053 Updated for SDL style
581b61429 Emscripten: Support Custom Message Boxes (#12583)
54f5b7333 emscripten: Don't use legacy JS library functions for assertions
03a53ce0d Always show the on-screen keyboard on Steam Deck
8caeaaacd A Steam Controller might be generating keyboard input
cbb83be89 Show the on-screen keyboard if we don't have active keyboard input
67b4c3a15 Sync SDL3 wiki -> header
10072bb07 asyncio: SDL_LoadFileAsync was not null-terminating the file data.
85435d5a1 SDL_audio.h: Fixed typos in docs.
3ed61f203 Fixed applications that integrate Qt with SDL joystick support
de60a5f39 Revert "Make native functions be public otherwise it fails at run-time."
fe024b8fe Fixed typo in build.gradle
10fae8c34 Fixed Android build warnings
bf7b9b020 Fixed gradle deprecation warnings
ac2870250 Use the android-21 SDK as documented in README-android.md
476e7e54c Don't create surfaces with invalid pixel formats
6f456da63 GPU: Request sampleRateShading feature on Vulkan
4fd4d89b6 Make native functions be public otherwise it fails at run-time. (they are public such as the one in SDLActivity)
f2ed5c7a1 Fix illegal calls to DwmGetWindowAttribute()
96bf12444 Windows allows windows to be resized to zero height.
47b0c7547 Make sure we're getting called for the correct window
3415bc920 Fixed crash if a window couldn't be created on Windows
07e4dea69 The posix4 library has been merged into the libc library
9820f655d android: reduce visiblity as much as possible
c696e9318 GPU Vulkan: Fix render pass race (#12587)
7b93a744c time: Fix compilation on Solaris
14deef997 emscripten: Fix undefined behavior in opengles2 renderer
5283f7374 storage: Declare a private bootstrap for NDA user storage
8b924df48 Use an autoreleasepool in Cocoa_GetDisplayUsableBounds()
82335fd0e Fixed building with SDL_LEAN_AND_MEAN
a551c2a6d Fix Vulkan error check
5985f0a32 Fixed infinite recursion in SDL_IsGamepad()
6d0fb0a2e gpu: Fix MTLLibrary dispatch data destructor
3e5664a5b Fix return type in SDL_CreateGPURenderState
4fc9509ab Fixed raw input device GUIDs changing randomly between runs
0bd70684b GPU: Fix Vulkan backend never checking deallocations (#12567)
715301cef Fixed crash if info->path is NULL
f5eea7efa remove status message for SDL_STATIC_PIC PIC is controlled through CMAKE_POSITION_INDEPENDENT_CODE and not by an SDL option
35c03774f [SDL3] Adding input and FFB support for Logitech G29(PS3) on hidapi (#11598)
d66483dfc video: Send pending coordinates for moved, hidden windows
b9504f247 opengl: pixelart fragment shader uses GLSL version 1.30
05531c5f4 release: use NDK r21e for building Android release artifact
18185e30e Remove breaks under return
80ff0f45f Move default
3b58ad9d4 Add breaks and defaults to switch statements
8b6e9936e Missed a bracket
36ec4cd39 Align spacing
3b90ce499 Fix spacing; tabs to 4 spaces
60857935c Add preliminary joystick support for snake example
aad1e3516 mouse: Allow use of integer coordinates with fractional wheel events
501e71f25 Added unaligned version of SDL_ConvertPixels_SwapNV_std()
ad9f9af4e Removed accidentally enabled debug code
efe122be4 Removed width/height parameters from LoadTexture()
dcb97a5f4 Set a default shader entry point
1a2fccc56 hints: The auto mode switching hint is for 3.4.0
285fa671a Sync SDL3 wiki -> header
0bfe0497f video: Add a hint to disable auto mode switching if an exclusive fullscreen window moves between displays
58f6e9c27 Fix trailing doc comments
f15832c68 Sync SDL3 wiki -> header
17b84dbcf emscripten: add window properties for canvas ID and keyboard element (#12509)
ffe69fc35 Fixed SDL_GPUTextureSupportsSampleCount() documentation
e671bc265 Sync SDL3 wiki -> header
02faa8f75 Rename SDL_SetGPURenderStateFragmentUniformData() to SDL_SetGPURenderStateFragmentUniforms()
96194347b Added an example of fullscreen shader effects with the GPU renderer
2aee105b4 Added support for custom shaders with the GPU renderer
eb56c8af8 Sync SDL3 wiki -> header
1ae4ef65e Fixed incorrect assert
3e9e22f17 Added SDL_SCALEMODE_PIXELART
853375da6 Removed texture_size from the GPU renderer vertex shader
28ec461eb Organize the GPU renderer draw code
af0420d89 Switched GPU renderer shaders to shadercross and HLSL
c318b1f92 SDL_mutex.h: Fixed code example.
0e29c6295 gpu: Clean up unused code in Vulkan and D3D12 drivers
71c4de190 Sync SDL3 wiki -> header
512d97eab cocoa: Set the internal window data before calling methods that may result in referencing the internal data
5e951a230 windows: Fix WIN_SetWindowAlwaysOnTop causing owner window z-order changes when child windows are created or change top-level status
50a397bb4 Removed help for obsolete (and removed) command line option
3235a4eb4 Initialize the padding of aligned allocations to zero
efaafd766 VITA: Remove unused/duplicate headers
7746a9656 Fixup the mingw readme cmakelists
2ce3dfdf1 Fixed Nintendo controller face button layout under Steam
be6ed6e9c Fixed sscanf("026", "%1x%1x%1x", &r, &g, &b)
24339524c Use sized types when fixing undefined behavior
f1d16e9b4 avoid UB (left shift of negative number) in SDL_windowsevents.c
9fcca8351 gpu: Validate that CopyGPUTextureToTexture formats match
f2866418d wayland: Fix enum/boolean comparison and assignment
597bfe6b2 mouse: Add internal integer mouse mode hint for sdl2-compat
65cd2256c emscripten: Fix handling of special HTML targets
5d804a39d Implement SDL_GetSystemRAM and SDL_GetNumLogicalCPUCores for the 3ds (#12494)
99336ea37 Fixed memory leak in memory leak tracking
0306b5a86 Fix n3ds/SDL_syssem.c:SDL_SignalSemaphore (libsdl-org/SDL#12411)
3353b92a9 Fixed pen events on iOS after reinitializing SDL
ad2584813 cocoa: Ignore both clicks and motion on tooltip windows
fe245c6e0 x11: Always synthesize size events for external windows
84d047cc1 wayland: Rollback the round trip when reading data offers
fc3510785 Sync SDL3 wiki -> header
d631a3add Add a link to docs/INTRO-mingw.md
04b4577b5 Added MinGW Intro readme, touched up CMake and Visual Studio readmes. (#12485)
b99ff00a9 Removed logic forcing vsync on if setting it off fails
55695d372 Sync SDL3 wiki -> header
9c7c11f25 wayland: Roundtrip when receiving data offers
c4be7f77a wayland: Add additional MIME types for text drag & drop
e20e27e1f Added SIMD blitters for 8888 -> 8888 format conversion
4c82b5843 Added support for SDL_PIXELFORMAT_MJPG to SDL_DuplicateSurface()
cb099ebd4 Make texture scale mode a part of the 2D renderer draw state
6e2d3c9b5 x11: Enable legacy synchronization for external window resize and move events
bdde07468 Sync SDL3 wiki -> header
49af57694 Disable XTest by default
794ff283e Added support for using XTest to warp the mouse
fae324dac Update XSync code to match SDL3 conventions
f01bcaeb1 Sync SDL3 wiki -> header
fe9bdcf50 Added SDL_HINT_VIDEO_X11_EXTERNAL_WINDOW_INPUT
9f557941f Sync SDL3 wiki -> header
8f40dad46 Document the thread safety of SDL surface functions
aef240b2e Fixed continuous logging if returning to desktop mode fails on X11
e9632c83c Handle XWayland not sending display disconnected events
ca9bc6b16 Revert "Ignore BadRROutput errors from XRRGetOutputInfo()"
0c8ddc1f0 Ignore BadRROutput errors from XRRGetOutputInfo()
80ae3a751 Fixed crash when restoring the desktop mode on macOS
5f07347e4 Fixed crash unplugging a HIDAPI controller
82552e5b7 Make SDL_RegisterEvents() thread-safe
9f9a44282 video: Synthesize fullscreen related moves if the driver does not.
e7abbf158 x11: Synthesize fullscreen size events on Openbox
5d20bbf34 Presenting while drawing to a render target should fail.
debbe1cf7 Fix for Message Box failing to init on X11 (#12455)
4bb46e93c Fixed clip rect when logical presentation is enabled
7df0ffd43 Sync SDL3 wiki -> header
7c29c8b26 Added fullscreen_active to better track fullscreen state
3b9f0dff1 Use _this pointer to reference the video device
0ccf272ee Check the display device before dereferencing
6c347cbf3 video: Handle Cocoa desktop mode switch inhibition in the video layer
24ec2ed78 Don't save temporary mode changes to the desktop mode
d57aa6f7a pipewire: Don't require pw_check_library_version() with Pipewire < 0.3.75
113eb6f01 gpu: Add BC2_RGBA_UNORM_SRGB to GetBlockWidth/Height functions
2c7c3d4d7 Only use VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR on Android
ca3c5fd40 fix build:  s/SDL_DetectSandbox/SDL_GetSandbox/
eac63b473 Add the definition for DBUS_TYPE_UNIX_FD to SDL_dbus.h
16f12c0d5 Implement the XDP Camera portal
c3b415641 Sync SDL3 wiki -> header
2a0223487 Sync SDL3 wiki -> header
1a7c20698 Save and restore error messages when rolling back after failed init
2c46c3d5b Updated dynamic API for new functions
5373271a1 forbid transform change while relative mode active
428f0dcd6 add SDL_SetRelativeMouseTransform
67127afe3 Fix from #12118
e25ee2246 Added tiled 9-grid texture rendering function
954675b32 Sync SDL3 wiki -> header
44bca81fd Change default texture scale mode per renderer
b0d2a4f35 gpu: Fix Z offset for D3D12 realigned 3D texture uploads
b69201dae cocoa: Don't overwrite the desktop mode when changing the fullscreen mode
078d737a2 cocoa: Run pending events to completion
b0df1cbbe Updated to version 3.3.0 for development
65864190c Added testpen to the Xcode test project
292e43174 Updated to version 3.2.6 for release
f0cb78e08 Handle XCreateIC() failing when composition UI is enabled
55484ef02 Moved WIN_UpdateMouseCapture() to be with the other mouse functions
020664bd1 Update mouse button state when re-entering a window
b836ad4d4 Fix a root signature mismatch for the D3D12 renderer
a88105784 camera: Delete some failure code that should have been removed before.
f868408a3 Ceil the audio resampling rate to avoid over-estimating output samples.
cbdc93b17 cmake: make sure a SDL3 library is present when not using COMPONENTs
8a7beca12 camera: clear the spec when closing, so re-opening can probe again
ee5f5c917 Sync SDL3 wiki -> header
6e4193b74 Note that the file names are UTF-8 encoded
60c65f9fa SDL_camera.c: fix failure-return in SDL_PrepareCameraSurfaces().
b8c2bc143 Added build dependencies for Arch Linux
7ab1412e2 Sync SDL3 wiki -> header
725af6ad1 camera: Fixed surface formats, etc, for Emscripten backend.
ef23ebfb5 Fixed the cursor clip rect when toggling window borders on macOS
c68259944 GPU_d3d12: Switched the default swapchain scaling mode to none.
ea513fd47 Fixed vulkan gpu backend android orientation behaviour to just work like on iOS.
87b1c9736 Fix pen generated mouse events not having SDL_PEN_MOUSEID  (#12392)
a44107540 sysjoystick: don't leak fd on error
9a802797d SDL_pen: fix eraser check
54c7aa9c9 Sync SDL3 wiki -> header
35e8cf8ee render: allow render targets to use logical presentation.
281f0fae1 Include the VID/PID of generic keyboard/mouse devices on Windows
d09bf5681 clipboard: Cleanup coding style
edaf44767 tests: Add showing/setting the primary selection text to testclipboard
7b9036bea wayland: Don't overwrite clipboard data with the primary selection text
f7cadcba8 examples: Use SDL_GetAudioStreamQueued, not SDL_GetAudioStreamAvailable.
b3336c5a7 Match style
2b784b5bf Fix SDL_GlobDirectory
eb89d0c8c Don't put wired Switch Pro controllers into simple report mode
1ea99bc90 Early out if setting a duplicate window title
56e2955b6 Sync SDL3 wiki -> header
cc984c973 Added a mapping for the 8BitDo SN30 Pro+ controller on macOS
ba88b6aa0 Fixed reliability of initializing Switch controllers on macOS
66ecdc69a Don't update the report mode until the related hint is set
fab52b578 wayland: Ensure that color descriptions are always retrieved
9464aaa8a Change D3D12 GPU backend to respect has_depth_stencil_target
cf819ca81 Don't allow further operations on properties while we're destroying them
e01257376 Don't fixup mappings for Joy-Con controllers
34c373495 Fixed opening one Joy-Con when the other is visible but disconnected
049a7a04d Wake the main thread for main function dispatch
f0f593f04 Embed a description about Wayland clipboard instead of a link
bb748ef2d Don't cleanup clipboard in SDL_SendClipboardUpdate on Wayland
38a73a178 Sync SDL3 wiki -> header
85a302550 Set an error message if the rect passed to SDL_RenderReadPixels() is entirely outside the viewport
29df99ee3 Clarified SDL_RenderReadPixels() documentation
2f77558ba fix comment
44f1ec35c GPU: Make Vulkan transfer buffers dedicated allocs
1c2189c7c strings.h isn't available in Windows environments
ffdca343f Sync SDL3 wiki -> header
ac5fca4ae Clarify the expected usage of SDL_StorageReady()
fc365e945 Sync SDL3 wiki -> header
ad840e879 Better document that main functionality is in SDL_main.h
bb8dcf08e Sync SDL3 wiki -> header
698032531 Added support for the "%n" sscanf format specifier
e6a24fcbb fix stbi__parse_png_file() reading too much bytes (thanks @miniupnp!)
db4e6c193 Cocoa metal layers need their size updated before renderer updates
0a592b78c Sync SDL3 wiki -> header
58388e8db Add SDL_HINT_JOYSTICK_HAPTIC_AXES
db817a37f gpu: Fix forward declaration and inclusion of PrivateGPUDriver
a7bc6c5e0 gpu: initialize VkDebugUtilsLabelEXT::color
60b7faa98 gpu: Validate that reserved struct members are unset
2990d142c Map additonal Linux keycodes to SDL scancodes
a0086a5cc Add missing scancode names
35544df83 Changed PULSEAUDIO_FlushRecording() to only flush audio present when called.
deadfe0c9 Sync SDL3 wiki -> header
0815637cf vulkan build fix
ea77472d7 Document/ignore GPU features without universal support
ad11c6988 src/io/SDL_asyncio.c:SDL_AsyncIOFromFile(): Fix null-dereference warning
8bfde6755 Remove unnecessary fcitx's devel package dependency in linux doc
52af81ea1 wayland: Fix mapping borderless windows under libdecor
1a0a94b50 x11: Accommodate the borders when setting the initial window position
52e64f816 Use SDL C runtime functions in OpenVR driver
7224b4040 Fix errors when building stb_image with -DSDL_LIBC=OFF
945da099a pipewire: Fix possible deadlock when opening a device
70f657e52 ci: farewell, clang32 on msys2
e50db698e Disable all camera drivers if SDL_CAMERA_DISABLED is defined
1ddba3ad5 Replace "8BitDo Tech Ltd" with "8BitDo" in the manufacturer string
fdf72d1e4 Use the keyboard/mouse vendor if available
a811e0ef0 Added support for the 8BitDo Micro gamepad
bc85c5535 testcontroller: create window with high pixel density
75bbcbf87 Added support for Motion JPEG pipewire camera capture
5c214e5e9 testcamera: SDL_AppQuit destroys state and SDL
03e00cd34 v4l2: map SDL_PIXELFORMAT_MJPG to V4L2_PIX_FMT_MJPEG
fcd41c1d2 Check desired window area when checking zoom state
b5297de56 Add 'const' to pointer parameters
911e53dec Retain mouse focus as long as we're getting mouse events
3b8cb6228 Make it easier to enable IME debug logs
9a607e886 make start&length represent utf32 indices
9d06145d6 ci: fix type + names of intel compiler artifacts
fa380a400 Update include/SDL3/SDL_assert.h
2a1b617fb Update include/SDL3/SDL_assert.h
69e03094b fallback to defining SDL_TriggerBreakpoint as __builtin_trap in older linux arm64 environments that do not have a __has_builtin facility
c70f54e28 Remove redundant casts
2e346d716 Added 32-bit texture formats to Texture_GetBlockWidth() and Texture_GetBlockHeight()
5d776c070 Refactored SDL_CreateJoystickName() into a general SDL_CreateDeviceName()
3293eb1a1 use hidapi to get mouse/keyboard string
785584230 ci: disable precompiled headers for classic intel compiler
71d1de5d9 ci: add cppflags to CMAKE_(C|CXX)_FLAGS
28f086794 SPA_FALLTHROUGH expands to nothing when using the Intel compiler
8d3db06ff ci: GitHub is retiring Ubuntu 20.04 support
c153f83df ci: enable ccache
52ee0c105 Sync SDL3 wiki -> header
9267930fe Added a fast path for converting the same format and pitch
f24f9d3be Revert "testcamera: added support for Motion JPEG camera frames"
2e89c53eb Added support for decoding MJPG into NV12 textures
06602f4e8 Document that the pitch is the length of the image data for SDL_PIXELFORMAT_MJPG
a792434a3 Added initial MJPG support using stb_image
baf69edfc Revert "cmake: build SDL_uclibc with -fPIC"
fdf8e5a70 ci: build static loongarch libraries with -fPIC
9784414dd cmake: build SDL_uclibc with -fPIC
b48de48ef wayland: Add support for high-DPI icons
6e0264d38 x11: Use the current or last-requested window position when setting the size hint
1a38960ee Call SDL_DiscardAllCommands() for the software renderer as well
8f4c5e15f Finish any drawing when destroying a software renderer
1a853973a thread/windows: fix stack overflow in exception naming
a40b2de94 Fix SDL_emscriptenaudio.c under wasm64
523e6530a SDL_test: fix "'function': different 'const' qualifiers" warning in SDL_test_harness
9e4c657ed wayland: Fix color manager protocol string check
7500a758b Remove usages of `restrict` keyword in SDL_render.c
a7f01cd73 x11: Set the pending window position immediately after mapping
1fd626939 Renamed DreamPort to DreamPicoPort
31f9cb480 Unchecked Return Value in WIN_SuspendScreenSaver (#12316)
057c3602e Removing Double-free Issue
5c79f4cae Incorrect bfOffBits Calculation in WIN_ConvertDIBtoBMP
70d23b234 README-migration: Remove errant reference to SDL_FALSE_
6aef6ae9a AddPulseAudioDevice(): Fix use-after-free
3b4cfc11f wayland: Update copyright dates in added color manager source files
fadb261b6 wayland: Add color manager protocol support
6ef687c86 Simplified and fixed media foundation buffer handling
de12cb92d Fixed crash at shutdown with new hashtable code
a51316890 Fixed Memory/Resource Leaks (#12304)
045a4492f test/testaudio.c: Fix use-after-free warning
da2460f9e test/testautomation_audio.c: Free variables before returning
7ea0ffb74 update
06eb10c51 haiku: check if the returned _SDL_GLView is null or not
dea99e54f Sync SDL3 wiki -> header
175494359 Fixed camera frame acquisition on Windows 7
e3d9f1172 Remove the reference to the thread when it is detached
831fc7092 test/testautomation_intrinsics.c: Free variables before returning
c6a3b5b6e src/test/SDL_test_harness.c: Free variables before returning
84a236c92 hashtable: Redesign the hashtable API.
4a9b57919 joystick: remove dead udev code
ba4525694 Sync SDL3 wiki -> header
fd4e6d294 Don't render 0 sized texture rectangles
6f3b14a6d audio/video: Fix uninitialized field warnings
5b98c4a52 Fixed motion events with TOOL_TYPE_UNKNOWN
8a648dfd9 emscripten: Fixed unregistering of key event handlers
c16b7bcb7 SDL_Get*Driver() functions: Set error message on failure
ed0a03e9b Fixed Cursor Icon State for SYSTEM_CURSOR_PROGRESS
5dce8c748 SDL_GetRelativeMouseState(): Get relative mouse position also when relative mouse mode is disabled
cedf53bbc Sync SDL3 wiki -> header
3de975884 Document the "trace" log priority
b9d018f2a Fixed wayland cursor use-after-free at shutdown
041894a52 Sync SDL3 wiki -> header
3be67ced6 Fix GTK tray icon without menu + lifetime
1354affd2 haiku: Fixed keyboard input.
d2b7a8465 Fixed SDL_GetNumGamepadTouchpads() returning 1 for a NULL gamepad
ca29304ce Fixed continually resetting keyboard and mouse readings
f67c64464 Fixed reporting hat positions for GameInput controllers
1b35ca9c3 Refactored GameInput initialization
706de78a9 audio/video: Skip preferred drivers when loading a driver on demand
715c18739 Added an internal hint "SDL_VIDEO_X11_XINPUT2" for sdl2-compat
ce69e9898 Copy SDL2_SYSWMEVENT data into temporary memory for the event
55fd205ba Add missing integer texture formats to SDL_GPUTextureFormatTexelBlockSize (#12151)
e6029401d Check for non-NULL icon for trays on Unix
b03332b68 updated bytepusher demo to be C++ compatible
5dd249264 updated the snake demo to be C++ compatible
78f816d74 x11: Apply the modifier state from key events
99cf16287 Fixed the name of SDL_SYSWMEVENT
6c3797152 Removed the mapping for the Sanwa Supply JY-P76USV
9b18e8438 [GPU] D3D12 backend debug markers were being cut
0bce19cf1 The 10-bit texture formats have alpha on Direct3D
3cfa476d3 Added support for SDL_PIXELFORMAT_ABGR8888 textures
5ccee7719 testcamera: added support for Motion JPEG camera frames
cf41ccc6c Removed stb_image.h from SDL
9308404e9 Removed functions not used by SDL
5e31bbf05 Remove functions not used when STBI_NO_PNG and STBI_NO_HDR are defined
84b0c13c4 Added support for Motion JPEG camera capture
3bc53b9ad wayland: Don't set libdecor frame visibility before the first commit
c03258626 wayland: Scale-to-display mode requires both viewports and xdg-output for proper functionality
b63d3afc1 Sync SDL3 wiki -> header
0bc1f8712 Added SDL_PROP_SURFACE_HOTSPOT_X_NUMBER and SDL_PROP_SURFACE_HOTSPOT_Y_NUMBER
da464e9e5 win32: Keep the window on the last maximized display when leaving fullscreen
bf01cc8ce Renamed "Dreamcast Controller Usb" to "DreamPort"
ecd089bb6 Don't return short waits from SDL_IOReady()
4fd0b2a85 Fix #12142 - the problem was if the size of the vertex buffer was exceeded, the currentVertexBuffer would be reset to zero and thus we'd leave it pointing to an in-use VB that would get overwritten on the next present before the vkQueueSubmit occurred.
f6126e9ea Centered joystick axis values should be 0
d35bef64e pipewire: Ensure that the correct struct is used for enumeration APIs
9bd6d3647 Added SDL_DEPS_SHARED option to control default dynamic loading of shared libraries (#12215)
78721d720 joystick: Fix PS5 player LED hint change callback name
7aba6c4c7 Proper Resource Cleanup in WIN_UpdateWindowShape
e29ebb9f1 Update geometry renderer example
ca9a044b3 Memory Leak in WIN_CreateHCursor When CreateColorBitmap Fails
69d28027a Fix for 500ms hang after user clicks on the title bar, but before moving (#12217)
a0b6c0fd8 x11: Don't wait for events when the connection errored out (#8392)
864bb65ce Removed crc
006605c3b Corrected alphabetical order
dc035c5ca Added mapping for Dreamcast Controller USB
5d1bbd9b2 Fix SSE 4.2 test
7c12c63f6 Add generic SDL_syscond to N3DS threads source list
2ced6b09f Delete src/thread/n3ds/SDL_syscond.c
7af17f874 Sync SDL3 wiki -> header
982094c85 Updated to version 3.2.5 for development
b5c3eab6b Updated to version 3.2.4 for release
48c00bfe6 Fixed creating a window with both software and hardware renderer attached
3c6e6645f Sync SDL3 wiki -> header
ad8429f1b Let the renderer always see window events
c59ac249d Revert "wayland: Don't send size events while the window is hidden"
6cb3d37a2 Sync SDL3 wiki -> header
80653a42c Remove non-ASCII character from public header SDL_hints.h
a646dc89e Note that SDL_GUIDToString() and SDL_StringToGUID() are thread-safe.
8730f6a56 dynapi: Don't use SDL_getenv; it might malloc before the app sets an allocator.
c9341489c Fix #12197: Force set /utf-8 for msvc compilers (#12198)
8397e1fcc Fix up SDL2 style mappings for HIDAPI controllers
7691cabe4 Removed incorrect HIDAPI gamepad mapping
86691d325 GPU: Remove stencil bit from sampler aspect mask on Vulkan (#12196)
6782cfe2c Don't use the HIDAPI driver for Thrustmaster wheels
1c0e2b7f9 SDL_OpenHapticFromJoystick() returns a valid haptic object
c4550d906 testcontroller: show the gamepad device type
5ad033768 Sync SDL3 wiki -> header
68dabd48c SDL_GetTrayEntries(): Rename parameter `size` to `count`
b99e19c0a Fixed potential double-free
8ba8cca69 Fixed memory leak looking up pen tool names
2cd2834df Fixed memory leak in the pen cleanup
c4c185283 dbus: fix spurious leak reports with SDL_SHUTDOWN_DBUS_ON_QUIT=0
691a6133d Remove #undef __3DS__
33c0654d5 Allow OpenGL initialization on XB1 and XSX.
eb5ab2203 Check nullptr before calling the windows message hook for WM_ENTERSIZEMOVE and WM_ENTERMENULOOP
e7f326a84 bmp: Removed debug printf call.
61b1c25ee x11: SDL_SetWindowPosition on an unmapped window will do the actual move later.
f1b3523c6 Remove redundant parenthesis in SDL_MUSTLOCK macro
8527d042b Remove const from parameter of inline function SDL_RectsEqualEpsilon()
07c22da46 Fixed decoding 4-bit RLE encoded BMP files
8ccf85c59 Formatting spaces around pointer symbol.
94409d350 Added Switch Input-only controller entries for Zuiki MasCon controller for Nintendo Switch.
a8a2874ef Added distinct VID/PIDs for the PS4 vs Xbox eSwap Pro controllers
84bc2abda Corrected the entry for the PXN V900 racing wheel
eac07bda0 Sort the controller lists by VID/PID
6243a0653 Call the windows message hook for WM_ENTERSIZEMOVE and WM_ENTERMENULOOP
ec959a434 Sync SDL3 wiki -> header
8e51b2468 Renamed SDL_SoftStretch() to SDL_StretchSurface()
f40ef62a2 Sync SDL3 wiki -> header
614ae843a Sync SDL3 wiki -> header
8848f8656 Corrected the version where SDL_SoftStretch() was added
a98a4b8a6 Re-added SDL_SoftStretch() to the API
842f85da0 Sync SDL3 wiki -> header
c06172dc1 Track mouse button state by real mouse ID
73a814358 timer, windows: allow building high resolution code with old SDKs.
be991239d Updated to version 3.2.3 for development
2fa1e7258 Updated to version 3.2.2 for release
c92276279 proposed fix: set curr_src.h is to bottom_height before drawing bottom edges / corners in SDL_RenderTexture9Grid, to avoid issue where inadvertently using top height if the npatch existed on a larger texture than the drawn edge would cause too many pixels to be included in the bottom part of the render.
235022fe2 Fixed error C2059: syntax error: '}'
dc13a6ae9 SDL_SaveBMP_IO: Write bitmap header v5 values
fe6bd8e9b Sync SDL3 wiki -> header
bc3264130 Fixed mouse motion events while the mouse is grabbed
69d361dee Ignore SDL_HINT_RENDER_DRIVER set to software when creating a window surface
70a239210 GPU: Describe "readonly storage" images as sampled images on Vulkan backend (#12149)
4c6d949e6 wayland: make sure the desktop mode is in the fullscreen mode list
ab5cb707a Fixed enabling call logging
16f8122a0 Keep the simplest mapping of scancode + modifer for a given keycode
6beda3421 do not build camera drivers if camera support is disabled
0825d07a4 wayland: Don't send size events while the window is hidden
8e766c925 GPU: Resource binding state shadowing (#12138)
43924ec87 Sync SDL3 wiki -> header
8c2682a21 Sync SDL3 wiki -> header
e4fcc7b6e gpu/vulkan/SDL_gpu_vulkan.c: fix type redefinition error
14edb21ae check for backslashes as well as the forward slash
50b8c6cdf Sync SDL3 wiki -> header
943c4abcb pipewire: Report correct device default formats instead of hardcoding Float32.
943579a54 Fix inverted pen Y tilt on macOS and add tilt display to example - Negate tilt.y in Cocoa pen handling to correct inverted Y tilt axis - Update drawing example to display X/Y tilt values for visualization - see 0f128fd7c5/src/plugins/platforms/cocoa/qnsview_tablet.mm (L63) - see https://source.chromium.org/chromium/chromium/src/+/main:components/input/web_input_event_builders_mac.mm;drc=0af5ffa1e4cc4cc4f818725f8fee93ec57855e4b;l=421
31364477f Rename parameter of type SDL_CameraID from devid to instance_id
36758d70c Rename parameters of type SDL_AudioDeviceID from dev to devid
2abc7735a Free XIDeviceInfo in X11_MaybeAddPenByDeviceID
8298d60e4 Dynamically load CreateWaitableTimerExW and SetWaitableTimerEx
409f3ade8 Removed SDF test program
4176e188b Enable testgles2 on all platforms
cf249b0cb fix -Wformat problem in 32 bit builds
11dbff246 Sync SDL3 wiki -> header
ccd5fcef1 audio: Fix potential NULL dereference in AudioStream gain adjustment.
48f555065 wayland: Don't send keyboard and mouse added events during initialization
2a946e91b android: updated release build SDK to match documented requirements
44edbf713 Use templates for the package support files
1c008d8ed Change DBUS introspection timer from INFINITE -> DEFAULT when introspecting available dialog services
c21bc48a7 Fix undefined behavior in SDL_windowsmouse.c
1c7cc6028 Skip IsRegularFileOrPipe() check on Emscripten
8f958953f audio: Fix audio stream gain going wrong in certain scenarios.
3b3af7105 audio: Fix a minor code style thing.
725ee7665 Documentation: fixed typos around floats precision
6f098a920 Avoid a crash when a tray without a menu is clicked on Windows.
09f900f66 audio: Remove resampling limits.
5f8e0ebf5 Fixed memory leak at shutdown
913e0a5e5 SDL_migration.cocci: handle more renamed event fields
628130ec8 SDL_migration.cocci: fix incorrect SDL3 API name
fa8c0f055 Sync SDL3 wiki -> header
17c4bdd75 Sync SDL3 wiki -> header
ad8a09000 Sync SDL3 wiki -> header
8df17c97d GPU: Add notes about shader resource requirements to documentation
303fd5ed5 release: rename resources/cmake -> resources/CMake in dmg
fdf33f904 xcode+cmake: Use SDL3.framework/SDL3 as IMPORTED_LOCATION
cb3d6dc46 .wikiheaders-options: Removed wikipreamble setting.
84c4ff2f1 Sync SDL3 wiki -> header
2e381a717 Fix possible integer overflow of size + 1
129ebc77b Sync SDL3 wiki -> header
a336b62d8 Remove newlines from error messages
d0ae09368 x11: Don't force position windows with an undefined position
72a3eae0d Fix buffer overrun in ConvertAudio with different src/dst channel count
983cfe8b1 Remove even more newlines from log messages
718034f5f Remove newlines from log messages
17625e20d Removed redundant step in Visual Studio instructions
c806c271c Tweaked emscripten introduction
74536243d Emscripten works well using the normal CMake workflow
98c447802 ci: bump to NetBSD 10.1
a437dbc7e Improve log documentation
1c21a72bd Sync SDL3 wiki -> header
73fc2b03a Copy pen handling code from `SDLSurface` to `SDLControllerManager`
6f3d0b3cd Fixed build when using an older Xcode SDK
cb3cc2880 emscripten: pass --no-sandbox to the chrome web driver
df3cfbc79 Sync SDL3 wiki -> header
799093799 GPU: Note buffer alignment requirements
5bf077f1f Sync SDL3 wiki -> header
5d6a78045 Sync SDL3 wiki -> header
77b520e93 Updated to version 3.2.1 for development
bb3c5b4f3 Fix multiple occurences of typo "an simple" to "a simple"
efa6e7aec android: add style to test apk's
535d80bad Include the README and related files in the SDL framework
ed2920afe All SDL 3.0 release symbols are at version 3.2.0
7a5604cf0 Sync SDL3 wiki -> headers.
7e130e27b fnsince.pl: Remove prerelease version tapdancing.
b775135b4 Removed temporary debug code
a52fc209b Updated to version 3.2.0 for release
f16c67115 Sync SDL3 wiki -> header
90bda6548 video: Don't let SDL_CreateWindowTexture use the software renderer.
c45c4a5e5 render: SDL_HINT_RENDER_DRIVER now accepts a comma-separated list.
670a7d812 Sync SDL3 wiki -> header
8a67896d9 docs: Note the preferred function for getting the content scale of a window
852686856 dialog: cleaned up D-Bus portal implementation
071bebf23 coreaudio: Add a note about why this uses 3 buffers instead of 2.
c0a9d220b vulkan: Fixes for swapchain resize crash on X11.
ea9880b76 Sync SDL3 wiki -> header
bcf7ead6e documentation typo: SFLOAT -> FLOAT
6d5815db5 vulkan: Deal with VK_ERROR_OUT_OF_DATE_KHR returns from vkAcquireNextImageKHR.
6b7dad7d8 vulkan: move temporary pointer to its own field to prevent a bad dereference.
3e530c6db cmake: remove superfluous cmake_minimum_required
7bff36e4b ci: add ubuntu arm job
37140aa9f cmake: expand libunwind
abe6d9db9 Automatically detect SDL_main_private.h
10c9fbf41 Use proper polar direction when creating FF_RUMBLE effect
c6c746970 Translate conditional effect direction instead of hardcoding it to 0
b476695e6 Call the windows message hook while inside a modal message loop
b6d0bc043 coreaudio: Use three buffers for the audioqueue, not two.
aa10e51c7 audio: Added some minor missing comments in struct SDL_AudioDevice.
10a5b388d win32: Retain the WS_MAXIMIZEDBOX style while in fullscreen
6449339ae win32: Restore the base size of a window when leaving fullscreen
075c0337c Removed debug print statement
a036aeda3 The Vulkan renderer doesn't actually support RGB texture formats
9b454a762 Revert "testautomation: don't validate alpha values on XRGB formats"
dcadd23ba render: Prevent division by zero if logical presentation is 0 pixels.
adb91fd3d process: Don't use vfork() on Apple platforms.
819628c6b testautomation: Remove Win32 borderless resizable hint
759e01bd6 testautomation: don't validate alpha values on XRGB formats
c698c61f0 renderer: initialize the surface colorspace correctly
c975f77b0 Update joysticks and so forth during live resize
362f96a6c testcontroller: use SDL_MAIN_USE_CALLBACKS so updates happen during live resizing
f8040b2e0 Use UIKeyboardTypeDecimalPad for number fields on iOS
90b2e2527 include: Added a tiny bit to SDL_sensor.h's category documentation.
2be749b23 include: More category documentation.
642262e30 cocoa: Fix mousegrab when going fullscreen.
d5766bc4b include: More category documentation.
b809da52f assert: Try using __builtin_trap() for SDL_TriggerBreakpoint().
c4c0bfdfb Sync SDL3 wiki -> header
7133969e3 Feature add hint to remap option as alt key (#12021)
53a535029 Sync SDL3 wiki -> header
5f2dd5f04 tray: fixed multi-threading issues with GTk implementation
dfdc12026 tray: document thread-safety
d4cda5105 tray: renamed SDL_HasNoActiveTrays() to SDL_HasActiveTrays()
a974888aa tray: fixed icon colors on Windows
7570ab106 tray: improved error checking
b716eeefe testtray: minor cleanup
3afd1e7ea windows: use WIN_UTF8ToStringW() for dialog titles
78023500f Sync SDL3 wiki -> header
34c12d0db include: Add category documentation to SDL_timer.h.
b088e8919 Sync SDL3 wiki -> header
0851322fb include: Add category documentation to SDL_power.h.
43b54b3d7 Fix Windows dialog folder titles
32965b4bf pen: Send virtual mouse motion without a button press when a pen is hovering.
5da9d4ecc cocoa: Slightly better display hotplugging detection.
19f42094b Fix Windows fie dialog args freeing
721fc7de0 Correct spacing of pointers ('a* b;' -> 'a *b;')
cd269730e Fix Windows dialog memory management
049a8f0e5 Use SDL_calloc() instead of SDL_malloc()
354d2c390 Initialize invalid parent_{tray,entry} to NULL
b79ada6aa Windows trays: Fix ParentEntry & Enabling
ba95c54f9 macOS: get the correct display name on macOS 10.15+
42e0fb10f wayland: Set the mouse state before calling the hit test callback
cd0db8d35 Added Linux evdev mappings for the Wireless HORIPAD For Steam
1d7a681e4 Revert "emscripten: resizable windows take whole page, resize with browser window."
e054f3c08 Sync SDL3 wiki -> header
75317dae5 include: Added category docs for SDL_mouse.h
c7d1fd90e Added support for the 8BitDo Ultimate 2C Wireless in Bluetooth mode
dbe3baeb0 release: document using the xcframework with CMake
ad3c7b92f xcode+cmake: use SDL3.framework folder as IMPORTED_LOCATION
0401b07ee Fixed typo
08e74d29b Fixed typo
923123a52 emscripten: Let SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT accept "#none"
c603a9c94 Moved flag documentation
90b7174a7 Respect the SDL_BORDERLESS_RESIZABLE_STYLE hint, but default it to true.
6a72d32d4 emscripten: Let SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT accept "".
f3a39074b windows: use WS_THICKFRAME style on borderless windows.
842f6dc40 Fixed wrong type of `phase` (#12014)
b95989d14 Fixed sine wave distortion over time.
010f27dc7 storage: enumerate and glob on storage can accept a NULL path.
a6a8598b9 storage: deal with paths with Windows '\\' path separators appended.
7c6adc1ca gpu renderer: removed unused sampler slots
feeea6a77 Sync SDL3 wiki -> headers.
e9f7f11f1 fnsince.pl: Fix script once bump to 3.1.10 exposed a bug.
d2fc394a2 Sync SDL3 wiki -> header
d317fc9c0 emscripten: resizable windows take whole page, resize with browser window.
ee469c6af Sync SDL3 wiki -> header
d4d22dd8d GPU: Add remarks about point topology
59ea078ee x11: check to see if displays moved when connected/disconnected
1848ce680 win32: Use the window coordinates to get the monitor when de-minimizing a maximized window
656c519cc Fixed warning C6313: Incorrect operator. Use an equality test to check for zero-valued flags.
9ed96f392 Sync SDL3 wiki -> header
ae8df1dcb Note that the primary monitor isn't always at 0,0
4b429b9fa Updated README-platforms.md
616ae9906 Removed README-git.md
c2dac95f5 Revert "Add CategoryAPICategory to the complete API index"
dd4f5df82 release: support android-X-ext-Y directories
cdc5483cf Vita: Fix off-by-one error for synthetic mouse events
07a5c144c Sync SDL3 wiki -> header
eb168e410 Updated to version 3.1.11 for development
b96bb152c wayland: Don't redundantly set the border state when showing a window
5a564a718 wayland: Add a dummy function for the libdecor dismiss popup callback
9f6eeb109 wayland: Set the border state before the initial configure
274bc95df Sync SDL3 wiki -> header
07f7c4046 Sync SDL3 wiki -> header
22d8e7353 include: filled in category documentation for SDL_messagebox.h.
21a42d2b0 Add CategoryAPICategory to the complete API index
1006236aa ci: add summary to release.yml
326ce9bb8 gpu: D3D12 buildfix for Xbox
c95b842b3 video: Xbox does not use CreateIconFromSurface
d8e1ad0eb release: skip extended Android SDK versions
7ee2ab383 wayland: Fix return value check from int-to-bool conversion
1dd8fadca Updated to version 3.1.10 for the release candidate
9225a421b Sync SDL3 wiki -> header
3ffb1a8cb storage: generic title storage allows override paths without '/' appended.
874c07f8d storage: Don't allow "." and ".." paths, enforce '/' dir separators.
67664a042 testfilesystem: test some Storage APIs, too.
eb793dede filesystem: SDL_GetCurrentDirectory() should add a path separator at the end.
87e1b0eb8 filesystem: SDL_EnumerateDirectory() gives dirs with path seperators appended.
e98ee9bb0 Adjust testgl.c to test gl_release_behavior
3424ec948 video: SDL_GL_GetAttribute gets correct SDL_GL_CONTEXT_RELEASE_BEHAVIOR value.
05877f2ce cmake: Add the IoRing async i/o code to the Windows build.
4d63a2b88 io: Renamed src/file to src/io
ea642fe9f cocoa: clear mouse focus based on NSEventTypeMouseExited events (#11991)
5f4696ce6 Updating documentation for the 3.2.0 release
2c7b7d1d3 Keep the lifecycle observer active while there are windows active
355f69ebf GPU: Ensure thread safety of Vulkan resource creation
c9d602307 cocoa: Only process hit tests on left clicks
dd0bdc256 win32: Pass through non-left mouse button presses when over draggable areas
84d35587e filesystem: SDL_SYS_EnumerateDirectory inexplicably takes the same arg twice.
fc9b2478d windows: don't set focus click pending if SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH is set
18d21b36f windows: use the initial rect to anchor fixed aspect ratio resizing
199547192 cocoa: fixed resizing windows with fixed aspect ratio
67382e9c8 Fixed detection of function keys on Emscripten
23410debf SDL_GetKeyboardNameForID(): Set an error message for invalid keyboard IDs
8ce176b59 SDL_GetMouseNameForID(): Set an error message for invalid mouse IDs.
51fa076fd Don't send normal keyboard events if no application window has focus
a446381ea Tooltips and unfocusable windows can't become main windows
ebb24eedc mouse: Clean up virtual touch devices as appropriate.
dabc93a63 pen: Send virtual mouse and touch events for pen input.
169c8d514 Fix incorrect hotspot calculation for cursor positioning
8e9c44bc3 Fixed accidental removal of optional delegate interface check
4dd585fb6 coreaudio: convert MPEG channel layout to WAVE channel layout
81e57147f Child windows shouldn't take focus if the parent window is in relative mouse mode
3bea84531 Sync SDL3 wiki -> header
9ed23a4b7 Updated SDL_SetEventFilter() documentation
e19a56f4d Don't send fake key events while processing real ones on Android
1ab61635a Use SDL_Log() for keyboard debugging.
29c684c62 Removed debug logging
0eaa6197c Removed unnecessary __builtin_available check
ffe194c52 Fixed build when SDL_JOYSTICK_MFI isn't enabled
a4547fe77 Updated weak framework dependencies for new deployment targets
49dd24e19 Fixed potentially overlapping memcpy() to use memmove()
191a6417d events: use SDL_memmove instead of SDL_memcpy for overlapping memory
bf793bf43 Sync SDL3 wiki -> header
9e60a8994 audio: Allow streams to change the device-side channels maps.
b2793a2ce Removed obsolete Raspberry Pi documentation
04e3b6770 Removed outdated Visual Studio instructions
a41f93bd1 Added https://github.com/Ravbug/sdl3-sample as a more complete Android example
5ca735b40 Only use WAVE surround sound channel layouts on macOS 10.15+
cdde6dd7b Bumped deployment requirements for Apple platforms
8f8af918b Removed CMakeLists.txt example that says you shouldn't use it
8feb21a1d Updated README-cmake.md with build instructions for several platforms
4294c0683 GPU: Check texture format support in pipeline creation
31dd4fe81 Sync SDL3 wiki -> header
417ed7f35 Fix references in docs
0aa319e4f Added support for custom tray icon on Windows via SDL hints.
581537220 minor update to mingw-w64 build instructions.
5d079c9a2 GPU: Remove bogus property from header docs
d590e1f12 GPU: Align D3D12 clear properties to naming convention
7098e525d Sync SDL3 wiki -> header
fb6df9338 GPU: Add name properties to resources (#11946)
a2b0ddcca Sync SDL3 wiki -> header
d28e95322 Added thread safety documentation for SDL_iostream.h
f731741ea Sync SDL3 wiki -> header
0eaa8c6d8 Added INTRO-emscripten.md
21b433536 Scale up the text for large displays
6bc7e88ca Added INTRO-androidstudio.md
e4e76ac72 Added INTRO-xcode.md
1b30a01b4 Added INTRO-visualstudio.md
191b9d502 Added INTRO-cmake.md
7d2a1c5f8 Mention the tests in INSTALL.md
b6b939044 Simplified INSTALL.md
55e094f7a Updated INSTALL.md with simple intro breadcrumbs
584c1d579 Tweaking the README
995a6a033 Minor readability improvement for README-contributing.md
86b46c678 Removed README-git.md
96414fa56 Removed obsolete Raspberry Pi documentation
670db4d24 Made the README links in INSTALL.md markdown links
b08d04581 Added a Discord link to BUGS.txt
2ad0f1e1f Updated the credits for SDL 3.0
41d48db4a Removed the runtime README
922b73195 Simplified the README
5e4a2974a Removed obsolete warnings about MIT licensed SIMD code
3766a3940 emscripten: double the audio buffer size.
e10e42c81 Sync SDL3 wiki -> header
2b8fb0bdd wikiheaders: Maybe fix perl warning.
efaf3739c Sync SDL3 wiki -> header
4bddf521d emscripten: Override emscripten's fullscreen button with SDL's implementation.
569de8490 better numerical precision for playback example
e5a4f0936 Call SDL_UDEV_Quit() if we don't end up using it
7d7a76c07 Sync SDL3 wiki -> header
66408308b Added documentation for mouse handling in relative mode
438075a83 Sync SDL3 wiki -> header
b4562c024 cocoa: Add a hint to control menu visibility in fullscreen spaces windows
611f132fd Don't use a hint callback for SDL_HINT_ANDROID_ALLOW_RECREATE_ACTIVITY
03a3c19c2 examples: use doubles to generate sine waves and avoid distortion
307e6f2ca emscripten: simulate mouse autocapture.
f79083d9b release: don't add test directory to mingw release archives
4ba4f0a10 release: add Android aar to devel zip archive
c4f2f7b35 Removed redundant information in example pages
949ec0c50 Sync SDL3 wiki -> header
839227b4b Sync SDL3 wiki -> header
c04b739df GPU: Note that resource naming functions are not thread safe.
3df0767e3 gpu: Initialize Metal stencil format even if stencil test is disabled
307dac97a testcontroller.c: fix build errors due to -Wformat after commit b524af1
21cc1878f Reset enhanced mode state when closing a controller
b524af1b4 testcontroller: log the ID of gamepads as they are added and removed
9a83fa026 apply multiplier scale after system scale
ea859fba3 Sync SDL3 wiki -> header
551510c0e SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE can be combined with SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE
95c158438 README-migration: note SDL2 brightness/gamma ramp APIs that have been removed.
f0af6c348 emscripten: Add SDL_EVENT_DISPLAY_ORIENTATION support.
3ad9c38a4 emscripten: Don't set OpenGL swap intervals until first PumpEvents.
d42b4ed96 Leave SDL_TriggerBreakpoint undefined on unknown platforms
9a7cfbc2d Add onNativePen to proguard-rules.pro
82125ec1d x11: Be more aggressive about finding _any_ usable messagebox font.
423184879 Revert "Separate android initialization from Activity (#11891)"
61f13b94d add a fallback SDL_TriggerBreakpoint() for MSVC after commit ebaa30d3.
d14c93c4b Separate android initialization from Activity (#11891)
c64197be1 Sync SDL3 wiki -> header
042898995 Added SDL_ClickTrayEntry()
fb0f6a119 cocoa: Display mode changes set Desktop display mode, not current.
38176bfe9 cocoa: Implemented display hotplugging support.
0e2ca934b events: Remove unused function declaration
715897aea Added support for displaying XIM composition strings
a8a65b6fc Use XIM for IME input on X11
1f3b40797 Sync SDL3 wiki -> header
fb94a79f8 stdinc: define SDL_NOLONGLONG for old Visual Studios, document the symbol.
bda90c3cb cmake: rename SDL_DISABLE_* CMake options to SDL_xxx
90aff306c gpu: Show a debug error when pipelines are not given the right shader stages
00b23a012 Sync SDL3 wiki -> header
6b776a998 keyboard: Add some SDL keycodes for common Xkb keys
e5966bbdb x11: Add support for Mod3 and more esoteric Xkb configurations
73ee99978 wayland: Add support for Mod3 and more esoteric Xkb configurations
ebaa30d33 __debugbreak was introduced in Microsoft Visual Studio 2003
c8f3f1b46 _BitScanReverse was introduced in Microsoft Visual Studio 2005
a78104a47 Disable long long support in the headers with SDL_NOLONGLONG
6cdde10ed gpu: Metal depth write should behave like Vulkan/D3D12
dd0dc64d5 Sync SDL3 wiki -> header
c688853a8 Sync SDL3 wiki -> header
507593f48 wikiheaders: Allow symbols to be filtered from manpage generation by regex.
7acf78ba9 storage: Trim the title storage root from enumerated paths
037cd25a2 win32: Use the pending size during NCCALCSIZE
e8916b260 pipewire: Use byte order pixel format aliases
d2090d1c8 Sync SDL3 wiki -> header
3f7f632e1 audio: Added SDL_AudioDeviceStreamPaused.
f61860fa9 testautomation: fixed incorrect test.
4bb3c2a1c render: Some cleanups.
61bdbacda render: SDL_RenderTextureTiled shouldn't try to drop draw calls, either.
f044a3d6c Revert "render: GetRenderViewportSize shouldn't use scale, just logical presentation."
fa7a52991 render: GetRenderViewportSize shouldn't scale viewport dimensions.
163600951 Sync SDL3 wiki -> header
bf8532094 render: Don't try to drop draws outside of the viewport.
f2f04e825 tests: Fix get/set window size test being skipped
cbdbd66e1 Sync SDL3 wiki -> header
ef1fdf11b tray: Create tray icons for libappindicator securely
e6bb50a71 Updated to version 3.1.9 for development
6b34c9fe7 Sync SDL3 wiki -> header
22422f774 Fixed ABI compatibility with 3.1.6
d7b10d05b Updated to version 3.1.8 for the preview release
4290fc8bd tray: Load GTK and libappindicator by versioned names, except on OpenBSD
6b38d250a tray: Don't try to use GTK 2 versions of libappindicator
bba066c44 tray: Don't call g_object_unref(NULL)
0bc370dfb Android doc cleanup
6934c910b opengl: use GL_UNSIGNED_BYTE instead of GL_UNSIGNED_INT_8_8_8_8_REV.
0176a19ae Fixed platform define condition for Windows phone
0180ca541 windows: Catch WM_POINTERCAPTURECHANGED events.

git-subtree-dir: external/SDL
git-subtree-split: 90fd2a3cbee5b7ead1f0517d7cc0eba1f3059207
2025-04-15 09:23:03 +02:00

1416 lines
61 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<protocol name="xdg_shell">
<copyright>
Copyright © 2008-2013 Kristian Høgsberg
Copyright © 2013 Rafael Antognolli
Copyright © 2013 Jasper St. Pierre
Copyright © 2010-2013 Intel Corporation
Copyright © 2015-2017 Samsung Electronics Co., Ltd
Copyright © 2015-2017 Red Hat Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
</copyright>
<interface name="xdg_wm_base" version="7">
<description summary="create desktop-style surfaces">
The xdg_wm_base interface is exposed as a global object enabling clients
to turn their wl_surfaces into windows in a desktop environment. It
defines the basic functionality needed for clients and the compositor to
create windows that can be dragged, resized, maximized, etc, as well as
creating transient windows such as popup menus.
</description>
<enum name="error">
<entry name="role" value="0" summary="given wl_surface has another role"/>
<entry name="defunct_surfaces" value="1"
summary="xdg_wm_base was destroyed before children"/>
<entry name="not_the_topmost_popup" value="2"
summary="the client tried to map or destroy a non-topmost popup"/>
<entry name="invalid_popup_parent" value="3"
summary="the client specified an invalid popup parent surface"/>
<entry name="invalid_surface_state" value="4"
summary="the client provided an invalid surface state"/>
<entry name="invalid_positioner" value="5"
summary="the client provided an invalid positioner"/>
<entry name="unresponsive" value="6"
summary="the client didnt respond to a ping event in time"/>
</enum>
<request name="destroy" type="destructor">
<description summary="destroy xdg_wm_base">
Destroy this xdg_wm_base object.
Destroying a bound xdg_wm_base object while there are surfaces
still alive created by this xdg_wm_base object instance is illegal
and will result in a defunct_surfaces error.
</description>
</request>
<request name="create_positioner">
<description summary="create a positioner object">
Create a positioner object. A positioner object is used to position
surfaces relative to some parent surface. See the interface description
and xdg_surface.get_popup for details.
</description>
<arg name="id" type="new_id" interface="xdg_positioner"/>
</request>
<request name="get_xdg_surface">
<description summary="create a shell surface from a surface">
This creates an xdg_surface for the given surface. While xdg_surface
itself is not a role, the corresponding surface may only be assigned
a role extending xdg_surface, such as xdg_toplevel or xdg_popup. It is
illegal to create an xdg_surface for a wl_surface which already has an
assigned role and this will result in a role error.
This creates an xdg_surface for the given surface. An xdg_surface is
used as basis to define a role to a given surface, such as xdg_toplevel
or xdg_popup. It also manages functionality shared between xdg_surface
based surface roles.
See the documentation of xdg_surface for more details about what an
xdg_surface is and how it is used.
</description>
<arg name="id" type="new_id" interface="xdg_surface"/>
<arg name="surface" type="object" interface="wl_surface"/>
</request>
<request name="pong">
<description summary="respond to a ping event">
A client must respond to a ping event with a pong request or
the client may be deemed unresponsive. See xdg_wm_base.ping
and xdg_wm_base.error.unresponsive.
</description>
<arg name="serial" type="uint" summary="serial of the ping event"/>
</request>
<event name="ping">
<description summary="check if the client is alive">
The ping event asks the client if it's still alive. Pass the
serial specified in the event back to the compositor by sending
a "pong" request back with the specified serial. See xdg_wm_base.pong.
Compositors can use this to determine if the client is still
alive. It's unspecified what will happen if the client doesn't
respond to the ping request, or in what timeframe. Clients should
try to respond in a reasonable amount of time. The “unresponsive”
error is provided for compositors that wish to disconnect unresponsive
clients.
A compositor is free to ping in any way it wants, but a client must
always respond to any xdg_wm_base object it created.
</description>
<arg name="serial" type="uint" summary="pass this to the pong request"/>
</event>
</interface>
<interface name="xdg_positioner" version="7">
<description summary="child surface positioner">
The xdg_positioner provides a collection of rules for the placement of a
child surface relative to a parent surface. Rules can be defined to ensure
the child surface remains within the visible area's borders, and to
specify how the child surface changes its position, such as sliding along
an axis, or flipping around a rectangle. These positioner-created rules are
constrained by the requirement that a child surface must intersect with or
be at least partially adjacent to its parent surface.
See the various requests for details about possible rules.
At the time of the request, the compositor makes a copy of the rules
specified by the xdg_positioner. Thus, after the request is complete the
xdg_positioner object can be destroyed or reused; further changes to the
object will have no effect on previous usages.
For an xdg_positioner object to be considered complete, it must have a
non-zero size set by set_size, and a non-zero anchor rectangle set by
set_anchor_rect. Passing an incomplete xdg_positioner object when
positioning a surface raises an invalid_positioner error.
</description>
<enum name="error">
<entry name="invalid_input" value="0" summary="invalid input provided"/>
</enum>
<request name="destroy" type="destructor">
<description summary="destroy the xdg_positioner object">
Notify the compositor that the xdg_positioner will no longer be used.
</description>
</request>
<request name="set_size">
<description summary="set the size of the to-be positioned rectangle">
Set the size of the surface that is to be positioned with the positioner
object. The size is in surface-local coordinates and corresponds to the
window geometry. See xdg_surface.set_window_geometry.
If a zero or negative size is set the invalid_input error is raised.
</description>
<arg name="width" type="int" summary="width of positioned rectangle"/>
<arg name="height" type="int" summary="height of positioned rectangle"/>
</request>
<request name="set_anchor_rect">
<description summary="set the anchor rectangle within the parent surface">
Specify the anchor rectangle within the parent surface that the child
surface will be placed relative to. The rectangle is relative to the
window geometry as defined by xdg_surface.set_window_geometry of the
parent surface.
When the xdg_positioner object is used to position a child surface, the
anchor rectangle may not extend outside the window geometry of the
positioned child's parent surface.
If a negative size is set the invalid_input error is raised.
</description>
<arg name="x" type="int" summary="x position of anchor rectangle"/>
<arg name="y" type="int" summary="y position of anchor rectangle"/>
<arg name="width" type="int" summary="width of anchor rectangle"/>
<arg name="height" type="int" summary="height of anchor rectangle"/>
</request>
<enum name="anchor">
<entry name="none" value="0"/>
<entry name="top" value="1"/>
<entry name="bottom" value="2"/>
<entry name="left" value="3"/>
<entry name="right" value="4"/>
<entry name="top_left" value="5"/>
<entry name="bottom_left" value="6"/>
<entry name="top_right" value="7"/>
<entry name="bottom_right" value="8"/>
</enum>
<request name="set_anchor">
<description summary="set anchor rectangle anchor">
Defines the anchor point for the anchor rectangle. The specified anchor
is used derive an anchor point that the child surface will be
positioned relative to. If a corner anchor is set (e.g. 'top_left' or
'bottom_right'), the anchor point will be at the specified corner;
otherwise, the derived anchor point will be centered on the specified
edge, or in the center of the anchor rectangle if no edge is specified.
</description>
<arg name="anchor" type="uint" enum="anchor"
summary="anchor"/>
</request>
<enum name="gravity">
<entry name="none" value="0"/>
<entry name="top" value="1"/>
<entry name="bottom" value="2"/>
<entry name="left" value="3"/>
<entry name="right" value="4"/>
<entry name="top_left" value="5"/>
<entry name="bottom_left" value="6"/>
<entry name="top_right" value="7"/>
<entry name="bottom_right" value="8"/>
</enum>
<request name="set_gravity">
<description summary="set child surface gravity">
Defines in what direction a surface should be positioned, relative to
the anchor point of the parent surface. If a corner gravity is
specified (e.g. 'bottom_right' or 'top_left'), then the child surface
will be placed towards the specified gravity; otherwise, the child
surface will be centered over the anchor point on any axis that had no
gravity specified. If the gravity is not in the gravity enum, an
invalid_input error is raised.
</description>
<arg name="gravity" type="uint" enum="gravity"
summary="gravity direction"/>
</request>
<enum name="constraint_adjustment" bitfield="true">
<description summary="constraint adjustments">
The constraint adjustment value define ways the compositor will adjust
the position of the surface, if the unadjusted position would result
in the surface being partly constrained.
Whether a surface is considered 'constrained' is left to the compositor
to determine. For example, the surface may be partly outside the
compositor's defined 'work area', thus necessitating the child surface's
position be adjusted until it is entirely inside the work area.
The adjustments can be combined, according to a defined precedence: 1)
Flip, 2) Slide, 3) Resize.
</description>
<entry name="none" value="0">
<description summary="don't move the child surface when constrained">
Don't alter the surface position even if it is constrained on some
axis, for example partially outside the edge of an output.
</description>
</entry>
<entry name="slide_x" value="1">
<description summary="move along the x axis until unconstrained">
Slide the surface along the x axis until it is no longer constrained.
First try to slide towards the direction of the gravity on the x axis
until either the edge in the opposite direction of the gravity is
unconstrained or the edge in the direction of the gravity is
constrained.
Then try to slide towards the opposite direction of the gravity on the
x axis until either the edge in the direction of the gravity is
unconstrained or the edge in the opposite direction of the gravity is
constrained.
</description>
</entry>
<entry name="slide_y" value="2">
<description summary="move along the y axis until unconstrained">
Slide the surface along the y axis until it is no longer constrained.
First try to slide towards the direction of the gravity on the y axis
until either the edge in the opposite direction of the gravity is
unconstrained or the edge in the direction of the gravity is
constrained.
Then try to slide towards the opposite direction of the gravity on the
y axis until either the edge in the direction of the gravity is
unconstrained or the edge in the opposite direction of the gravity is
constrained.
</description>
</entry>
<entry name="flip_x" value="4">
<description summary="invert the anchor and gravity on the x axis">
Invert the anchor and gravity on the x axis if the surface is
constrained on the x axis. For example, if the left edge of the
surface is constrained, the gravity is 'left' and the anchor is
'left', change the gravity to 'right' and the anchor to 'right'.
If the adjusted position also ends up being constrained, the resulting
position of the flip_x adjustment will be the one before the
adjustment.
</description>
</entry>
<entry name="flip_y" value="8">
<description summary="invert the anchor and gravity on the y axis">
Invert the anchor and gravity on the y axis if the surface is
constrained on the y axis. For example, if the bottom edge of the
surface is constrained, the gravity is 'bottom' and the anchor is
'bottom', change the gravity to 'top' and the anchor to 'top'.
The adjusted position is calculated given the original anchor
rectangle and offset, but with the new flipped anchor and gravity
values.
If the adjusted position also ends up being constrained, the resulting
position of the flip_y adjustment will be the one before the
adjustment.
</description>
</entry>
<entry name="resize_x" value="16">
<description summary="horizontally resize the surface">
Resize the surface horizontally so that it is completely
unconstrained.
</description>
</entry>
<entry name="resize_y" value="32">
<description summary="vertically resize the surface">
Resize the surface vertically so that it is completely unconstrained.
</description>
</entry>
</enum>
<request name="set_constraint_adjustment">
<description summary="set the adjustment to be done when constrained">
Specify how the window should be positioned if the originally intended
position caused the surface to be constrained, meaning at least
partially outside positioning boundaries set by the compositor. The
adjustment is set by constructing a bitmask describing the adjustment to
be made when the surface is constrained on that axis.
If no bit for one axis is set, the compositor will assume that the child
surface should not change its position on that axis when constrained.
If more than one bit for one axis is set, the order of how adjustments
are applied is specified in the corresponding adjustment descriptions.
The default adjustment is none.
</description>
<arg name="constraint_adjustment" type="uint" enum="constraint_adjustment"
summary="bit mask of constraint adjustments"/>
</request>
<request name="set_offset">
<description summary="set surface position offset">
Specify the surface position offset relative to the position of the
anchor on the anchor rectangle and the anchor on the surface. For
example if the anchor of the anchor rectangle is at (x, y), the surface
has the gravity bottom|right, and the offset is (ox, oy), the calculated
surface position will be (x + ox, y + oy). The offset position of the
surface is the one used for constraint testing. See
set_constraint_adjustment.
An example use case is placing a popup menu on top of a user interface
element, while aligning the user interface element of the parent surface
with some user interface element placed somewhere in the popup surface.
</description>
<arg name="x" type="int" summary="surface position x offset"/>
<arg name="y" type="int" summary="surface position y offset"/>
</request>
<!-- Version 3 additions -->
<request name="set_reactive" since="3">
<description summary="continuously reconstrain the surface">
When set reactive, the surface is reconstrained if the conditions used
for constraining changed, e.g. the parent window moved.
If the conditions changed and the popup was reconstrained, an
xdg_popup.configure event is sent with updated geometry, followed by an
xdg_surface.configure event.
</description>
</request>
<request name="set_parent_size" since="3">
<description summary="">
Set the parent window geometry the compositor should use when
positioning the popup. The compositor may use this information to
determine the future state the popup should be constrained using. If
this doesn't match the dimension of the parent the popup is eventually
positioned against, the behavior is undefined.
The arguments are given in the surface-local coordinate space.
</description>
<arg name="parent_width" type="int"
summary="future window geometry width of parent"/>
<arg name="parent_height" type="int"
summary="future window geometry height of parent"/>
</request>
<request name="set_parent_configure" since="3">
<description summary="set parent configure this is a response to">
Set the serial of an xdg_surface.configure event this positioner will be
used in response to. The compositor may use this information together
with set_parent_size to determine what future state the popup should be
constrained using.
</description>
<arg name="serial" type="uint"
summary="serial of parent configure event"/>
</request>
</interface>
<interface name="xdg_surface" version="7">
<description summary="desktop user interface surface base interface">
An interface that may be implemented by a wl_surface, for
implementations that provide a desktop-style user interface.
It provides a base set of functionality required to construct user
interface elements requiring management by the compositor, such as
toplevel windows, menus, etc. The types of functionality are split into
xdg_surface roles.
Creating an xdg_surface does not set the role for a wl_surface. In order
to map an xdg_surface, the client must create a role-specific object
using, e.g., get_toplevel, get_popup. The wl_surface for any given
xdg_surface can have at most one role, and may not be assigned any role
not based on xdg_surface.
A role must be assigned before any other requests are made to the
xdg_surface object.
The client must call wl_surface.commit on the corresponding wl_surface
for the xdg_surface state to take effect.
Creating an xdg_surface from a wl_surface which has a buffer attached or
committed is a client error, and any attempts by a client to attach or
manipulate a buffer prior to the first xdg_surface.configure call must
also be treated as errors.
After creating a role-specific object and setting it up (e.g. by sending
the title, app ID, size constraints, parent, etc), the client must
perform an initial commit without any buffer attached. The compositor
will reply with initial wl_surface state such as
wl_surface.preferred_buffer_scale followed by an xdg_surface.configure
event. The client must acknowledge it and is then allowed to attach a
buffer to map the surface.
Mapping an xdg_surface-based role surface is defined as making it
possible for the surface to be shown by the compositor. Note that
a mapped surface is not guaranteed to be visible once it is mapped.
For an xdg_surface to be mapped by the compositor, the following
conditions must be met:
(1) the client has assigned an xdg_surface-based role to the surface
(2) the client has set and committed the xdg_surface state and the
role-dependent state to the surface
(3) the client has committed a buffer to the surface
A newly-unmapped surface is considered to have met condition (1) out
of the 3 required conditions for mapping a surface if its role surface
has not been destroyed, i.e. the client must perform the initial commit
again before attaching a buffer.
</description>
<enum name="error">
<entry name="not_constructed" value="1"
summary="Surface was not fully constructed"/>
<entry name="already_constructed" value="2"
summary="Surface was already constructed"/>
<entry name="unconfigured_buffer" value="3"
summary="Attaching a buffer to an unconfigured surface"/>
<entry name="invalid_serial" value="4"
summary="Invalid serial number when acking a configure event"/>
<entry name="invalid_size" value="5"
summary="Width or height was zero or negative"/>
<entry name="defunct_role_object" value="6"
summary="Surface was destroyed before its role object"/>
</enum>
<request name="destroy" type="destructor">
<description summary="destroy the xdg_surface">
Destroy the xdg_surface object. An xdg_surface must only be destroyed
after its role object has been destroyed, otherwise
a defunct_role_object error is raised.
</description>
</request>
<request name="get_toplevel">
<description summary="assign the xdg_toplevel surface role">
This creates an xdg_toplevel object for the given xdg_surface and gives
the associated wl_surface the xdg_toplevel role.
See the documentation of xdg_toplevel for more details about what an
xdg_toplevel is and how it is used.
</description>
<arg name="id" type="new_id" interface="xdg_toplevel"/>
</request>
<request name="get_popup">
<description summary="assign the xdg_popup surface role">
This creates an xdg_popup object for the given xdg_surface and gives
the associated wl_surface the xdg_popup role.
If null is passed as a parent, a parent surface must be specified using
some other protocol, before committing the initial state.
See the documentation of xdg_popup for more details about what an
xdg_popup is and how it is used.
</description>
<arg name="id" type="new_id" interface="xdg_popup"/>
<arg name="parent" type="object" interface="xdg_surface" allow-null="true"/>
<arg name="positioner" type="object" interface="xdg_positioner"/>
</request>
<request name="set_window_geometry">
<description summary="set the new window geometry">
The window geometry of a surface is its "visible bounds" from the
user's perspective. Client-side decorations often have invisible
portions like drop-shadows which should be ignored for the
purposes of aligning, placing and constraining windows.
The window geometry is double-buffered state, see wl_surface.commit.
When maintaining a position, the compositor should treat the (x, y)
coordinate of the window geometry as the top left corner of the window.
A client changing the (x, y) window geometry coordinate should in
general not alter the position of the window.
Once the window geometry of the surface is set, it is not possible to
unset it, and it will remain the same until set_window_geometry is
called again, even if a new subsurface or buffer is attached.
If never set, the value is the full bounds of the surface,
including any subsurfaces. This updates dynamically on every
commit. This unset is meant for extremely simple clients.
The arguments are given in the surface-local coordinate space of
the wl_surface associated with this xdg_surface, and may extend outside
of the wl_surface itself to mark parts of the subsurface tree as part of
the window geometry.
When applied, the effective window geometry will be the set window
geometry clamped to the bounding rectangle of the combined
geometry of the surface of the xdg_surface and the associated
subsurfaces.
The effective geometry will not be recalculated unless a new call to
set_window_geometry is done and the new pending surface state is
subsequently applied.
The width and height of the effective window geometry must be
greater than zero. Setting an invalid size will raise an
invalid_size error.
</description>
<arg name="x" type="int"/>
<arg name="y" type="int"/>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
</request>
<request name="ack_configure">
<description summary="ack a configure event">
When a configure event is received, if a client commits the
surface in response to the configure event, then the client
must make an ack_configure request sometime before the commit
request, passing along the serial of the configure event.
For instance, for toplevel surfaces the compositor might use this
information to move a surface to the top left only when the client has
drawn itself for the maximized or fullscreen state.
If the client receives multiple configure events before it
can respond to one, it only has to ack the last configure event.
Acking a configure event that was never sent raises an invalid_serial
error.
A client is not required to commit immediately after sending
an ack_configure request - it may even ack_configure several times
before its next surface commit.
A client may send multiple ack_configure requests before committing, but
only the last request sent before a commit indicates which configure
event the client really is responding to.
Sending an ack_configure request consumes the serial number sent with
the request, as well as serial numbers sent by all configure events
sent on this xdg_surface prior to the configure event referenced by
the committed serial.
It is an error to issue multiple ack_configure requests referencing a
serial from the same configure event, or to issue an ack_configure
request referencing a serial from a configure event issued before the
event identified by the last ack_configure request for the same
xdg_surface. Doing so will raise an invalid_serial error.
</description>
<arg name="serial" type="uint" summary="the serial from the configure event"/>
</request>
<event name="configure">
<description summary="suggest a surface change">
The configure event marks the end of a configure sequence. A configure
sequence is a set of one or more events configuring the state of the
xdg_surface, including the final xdg_surface.configure event.
Where applicable, xdg_surface surface roles will during a configure
sequence extend this event as a latched state sent as events before the
xdg_surface.configure event. Such events should be considered to make up
a set of atomically applied configuration states, where the
xdg_surface.configure commits the accumulated state.
Clients should arrange their surface for the new states, and then send
an ack_configure request with the serial sent in this configure event at
some point before committing the new surface.
If the client receives multiple configure events before it can respond
to one, it is free to discard all but the last event it received.
</description>
<arg name="serial" type="uint" summary="serial of the configure event"/>
</event>
</interface>
<interface name="xdg_toplevel" version="7">
<description summary="toplevel surface">
This interface defines an xdg_surface role which allows a surface to,
among other things, set window-like properties such as maximize,
fullscreen, and minimize, set application-specific metadata like title and
id, and well as trigger user interactive operations such as interactive
resize and move.
A xdg_toplevel by default is responsible for providing the full intended
visual representation of the toplevel, which depending on the window
state, may mean things like a title bar, window controls and drop shadow.
Unmapping an xdg_toplevel means that the surface cannot be shown
by the compositor until it is explicitly mapped again.
All active operations (e.g., move, resize) are canceled and all
attributes (e.g. title, state, stacking, ...) are discarded for
an xdg_toplevel surface when it is unmapped. The xdg_toplevel returns to
the state it had right after xdg_surface.get_toplevel. The client
can re-map the toplevel by performing a commit without any buffer
attached, waiting for a configure event and handling it as usual (see
xdg_surface description).
Attaching a null buffer to a toplevel unmaps the surface.
</description>
<request name="destroy" type="destructor">
<description summary="destroy the xdg_toplevel">
This request destroys the role surface and unmaps the surface;
see "Unmapping" behavior in interface section for details.
</description>
</request>
<enum name="error">
<entry name="invalid_resize_edge" value="0" summary="provided value is
not a valid variant of the resize_edge enum"/>
<entry name="invalid_parent" value="1"
summary="invalid parent toplevel"/>
<entry name="invalid_size" value="2"
summary="client provided an invalid min or max size"/>
</enum>
<request name="set_parent">
<description summary="set the parent of this surface">
Set the "parent" of this surface. This surface should be stacked
above the parent surface and all other ancestor surfaces.
Parent surfaces should be set on dialogs, toolboxes, or other
"auxiliary" surfaces, so that the parent is raised when the dialog
is raised.
Setting a null parent for a child surface unsets its parent. Setting
a null parent for a surface which currently has no parent is a no-op.
Only mapped surfaces can have child surfaces. Setting a parent which
is not mapped is equivalent to setting a null parent. If a surface
becomes unmapped, its children's parent is set to the parent of
the now-unmapped surface. If the now-unmapped surface has no parent,
its children's parent is unset. If the now-unmapped surface becomes
mapped again, its parent-child relationship is not restored.
The parent toplevel must not be one of the child toplevel's
descendants, and the parent must be different from the child toplevel,
otherwise the invalid_parent protocol error is raised.
</description>
<arg name="parent" type="object" interface="xdg_toplevel" allow-null="true"/>
</request>
<request name="set_title">
<description summary="set surface title">
Set a short title for the surface.
This string may be used to identify the surface in a task bar,
window list, or other user interface elements provided by the
compositor.
The string must be encoded in UTF-8.
</description>
<arg name="title" type="string"/>
</request>
<request name="set_app_id">
<description summary="set application ID">
Set an application identifier for the surface.
The app ID identifies the general class of applications to which
the surface belongs. The compositor can use this to group multiple
surfaces together, or to determine how to launch a new application.
For D-Bus activatable applications, the app ID is used as the D-Bus
service name.
The compositor shell will try to group application surfaces together
by their app ID. As a best practice, it is suggested to select app
ID's that match the basename of the application's .desktop file.
For example, "org.freedesktop.FooViewer" where the .desktop file is
"org.freedesktop.FooViewer.desktop".
Like other properties, a set_app_id request can be sent after the
xdg_toplevel has been mapped to update the property.
See the desktop-entry specification [0] for more details on
application identifiers and how they relate to well-known D-Bus
names and .desktop files.
[0] https://standards.freedesktop.org/desktop-entry-spec/
</description>
<arg name="app_id" type="string"/>
</request>
<request name="show_window_menu">
<description summary="show the window menu">
Clients implementing client-side decorations might want to show
a context menu when right-clicking on the decorations, giving the
user a menu that they can use to maximize or minimize the window.
This request asks the compositor to pop up such a window menu at
the given position, relative to the local surface coordinates of
the parent surface. There are no guarantees as to what menu items
the window menu contains, or even if a window menu will be drawn
at all.
This request must be used in response to some sort of user action
like a button press, key press, or touch down event.
</description>
<arg name="seat" type="object" interface="wl_seat" summary="the wl_seat of the user event"/>
<arg name="serial" type="uint" summary="the serial of the user event"/>
<arg name="x" type="int" summary="the x position to pop up the window menu at"/>
<arg name="y" type="int" summary="the y position to pop up the window menu at"/>
</request>
<request name="move">
<description summary="start an interactive move">
Start an interactive, user-driven move of the surface.
This request must be used in response to some sort of user action
like a button press, key press, or touch down event. The passed
serial is used to determine the type of interactive move (touch,
pointer, etc).
The server may ignore move requests depending on the state of
the surface (e.g. fullscreen or maximized), or if the passed serial
is no longer valid.
If triggered, the surface will lose the focus of the device
(wl_pointer, wl_touch, etc) used for the move. It is up to the
compositor to visually indicate that the move is taking place, such as
updating a pointer cursor, during the move. There is no guarantee
that the device focus will return when the move is completed.
</description>
<arg name="seat" type="object" interface="wl_seat" summary="the wl_seat of the user event"/>
<arg name="serial" type="uint" summary="the serial of the user event"/>
</request>
<enum name="resize_edge">
<description summary="edge values for resizing">
These values are used to indicate which edge of a surface
is being dragged in a resize operation.
</description>
<entry name="none" value="0"/>
<entry name="top" value="1"/>
<entry name="bottom" value="2"/>
<entry name="left" value="4"/>
<entry name="top_left" value="5"/>
<entry name="bottom_left" value="6"/>
<entry name="right" value="8"/>
<entry name="top_right" value="9"/>
<entry name="bottom_right" value="10"/>
</enum>
<request name="resize">
<description summary="start an interactive resize">
Start a user-driven, interactive resize of the surface.
This request must be used in response to some sort of user action
like a button press, key press, or touch down event. The passed
serial is used to determine the type of interactive resize (touch,
pointer, etc).
The server may ignore resize requests depending on the state of
the surface (e.g. fullscreen or maximized).
If triggered, the client will receive configure events with the
"resize" state enum value and the expected sizes. See the "resize"
enum value for more details about what is required. The client
must also acknowledge configure events using "ack_configure". After
the resize is completed, the client will receive another "configure"
event without the resize state.
If triggered, the surface also will lose the focus of the device
(wl_pointer, wl_touch, etc) used for the resize. It is up to the
compositor to visually indicate that the resize is taking place,
such as updating a pointer cursor, during the resize. There is no
guarantee that the device focus will return when the resize is
completed.
The edges parameter specifies how the surface should be resized, and
is one of the values of the resize_edge enum. Values not matching
a variant of the enum will cause the invalid_resize_edge protocol error.
The compositor may use this information to update the surface position
for example when dragging the top left corner. The compositor may also
use this information to adapt its behavior, e.g. choose an appropriate
cursor image.
</description>
<arg name="seat" type="object" interface="wl_seat" summary="the wl_seat of the user event"/>
<arg name="serial" type="uint" summary="the serial of the user event"/>
<arg name="edges" type="uint" enum="resize_edge" summary="which edge or corner is being dragged"/>
</request>
<enum name="state">
<description summary="types of state on the surface">
The different state values used on the surface. This is designed for
state values like maximized, fullscreen. It is paired with the
configure event to ensure that both the client and the compositor
setting the state can be synchronized.
States set in this way are double-buffered, see wl_surface.commit.
</description>
<entry name="maximized" value="1" summary="the surface is maximized">
<description summary="the surface is maximized">
The surface is maximized. The window geometry specified in the configure
event must be obeyed by the client, or the xdg_wm_base.invalid_surface_state
error is raised.
The client should draw without shadow or other
decoration outside of the window geometry.
</description>
</entry>
<entry name="fullscreen" value="2" summary="the surface is fullscreen">
<description summary="the surface is fullscreen">
The surface is fullscreen. The window geometry specified in the
configure event is a maximum; the client cannot resize beyond it. For
a surface to cover the whole fullscreened area, the geometry
dimensions must be obeyed by the client. For more details, see
xdg_toplevel.set_fullscreen.
</description>
</entry>
<entry name="resizing" value="3" summary="the surface is being resized">
<description summary="the surface is being resized">
The surface is being resized. The window geometry specified in the
configure event is a maximum; the client cannot resize beyond it.
Clients that have aspect ratio or cell sizing configuration can use
a smaller size, however.
</description>
</entry>
<entry name="activated" value="4" summary="the surface is now activated">
<description summary="the surface is now activated">
Client window decorations should be painted as if the window is
active. Do not assume this means that the window actually has
keyboard or pointer focus.
</description>
</entry>
<entry name="tiled_left" value="5" since="2">
<description summary="the surfaces left edge is tiled">
The window is currently in a tiled layout and the left edge is
considered to be adjacent to another part of the tiling grid.
The client should draw without shadow or other decoration outside of
the window geometry on the left edge.
</description>
</entry>
<entry name="tiled_right" value="6" since="2">
<description summary="the surfaces right edge is tiled">
The window is currently in a tiled layout and the right edge is
considered to be adjacent to another part of the tiling grid.
The client should draw without shadow or other decoration outside of
the window geometry on the right edge.
</description>
</entry>
<entry name="tiled_top" value="7" since="2">
<description summary="the surfaces top edge is tiled">
The window is currently in a tiled layout and the top edge is
considered to be adjacent to another part of the tiling grid.
The client should draw without shadow or other decoration outside of
the window geometry on the top edge.
</description>
</entry>
<entry name="tiled_bottom" value="8" since="2">
<description summary="the surfaces bottom edge is tiled">
The window is currently in a tiled layout and the bottom edge is
considered to be adjacent to another part of the tiling grid.
The client should draw without shadow or other decoration outside of
the window geometry on the bottom edge.
</description>
</entry>
<entry name="suspended" value="9" since="6">
<description summary="surface repaint is suspended">
The surface is currently not ordinarily being repainted; for
example because its content is occluded by another window, or its
outputs are switched off due to screen locking.
</description>
</entry>
<entry name="constrained_left" value="10" since="7">
<description summary="the surfaces left edge is constrained">
The left edge of the window is currently constrained, meaning it
shouldn't attempt to resize from that edge. It can for example mean
it's tiled next to a monitor edge on the constrained side of the
window.
</description>
</entry>
<entry name="constrained_right" value="11" since="7">
<description summary="the surfaces right edge is constrained">
The right edge of the window is currently constrained, meaning it
shouldn't attempt to resize from that edge. It can for example mean
it's tiled next to a monitor edge on the constrained side of the
window.
</description>
</entry>
<entry name="constrained_top" value="12" since="7">
<description summary="the surfaces top edge is constrained">
The top edge of the window is currently constrained, meaning it
shouldn't attempt to resize from that edge. It can for example mean
it's tiled next to a monitor edge on the constrained side of the
window.
</description>
</entry>
<entry name="constrained_bottom" value="13" since="7">
<description summary="the surfaces bottom edge is tiled">
The bottom edge of the window is currently constrained, meaning it
shouldn't attempt to resize from that edge. It can for example mean
it's tiled next to a monitor edge on the constrained side of the
window.
</description>
</entry>
</enum>
<request name="set_max_size">
<description summary="set the maximum size">
Set a maximum size for the window.
The client can specify a maximum size so that the compositor does
not try to configure the window beyond this size.
The width and height arguments are in window geometry coordinates.
See xdg_surface.set_window_geometry.
Values set in this way are double-buffered, see wl_surface.commit.
The compositor can use this information to allow or disallow
different states like maximize or fullscreen and draw accurate
animations.
Similarly, a tiling window manager may use this information to
place and resize client windows in a more effective way.
The client should not rely on the compositor to obey the maximum
size. The compositor may decide to ignore the values set by the
client and request a larger size.
If never set, or a value of zero in the request, means that the
client has no expected maximum size in the given dimension.
As a result, a client wishing to reset the maximum size
to an unspecified state can use zero for width and height in the
request.
Requesting a maximum size to be smaller than the minimum size of
a surface is illegal and will result in an invalid_size error.
The width and height must be greater than or equal to zero. Using
strictly negative values for width or height will result in a
invalid_size error.
</description>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
</request>
<request name="set_min_size">
<description summary="set the minimum size">
Set a minimum size for the window.
The client can specify a minimum size so that the compositor does
not try to configure the window below this size.
The width and height arguments are in window geometry coordinates.
See xdg_surface.set_window_geometry.
Values set in this way are double-buffered, see wl_surface.commit.
The compositor can use this information to allow or disallow
different states like maximize or fullscreen and draw accurate
animations.
Similarly, a tiling window manager may use this information to
place and resize client windows in a more effective way.
The client should not rely on the compositor to obey the minimum
size. The compositor may decide to ignore the values set by the
client and request a smaller size.
If never set, or a value of zero in the request, means that the
client has no expected minimum size in the given dimension.
As a result, a client wishing to reset the minimum size
to an unspecified state can use zero for width and height in the
request.
Requesting a minimum size to be larger than the maximum size of
a surface is illegal and will result in an invalid_size error.
The width and height must be greater than or equal to zero. Using
strictly negative values for width and height will result in a
invalid_size error.
</description>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
</request>
<request name="set_maximized">
<description summary="maximize the window">
Maximize the surface.
After requesting that the surface should be maximized, the compositor
will respond by emitting a configure event. Whether this configure
actually sets the window maximized is subject to compositor policies.
The client must then update its content, drawing in the configured
state. The client must also acknowledge the configure when committing
the new content (see ack_configure).
It is up to the compositor to decide how and where to maximize the
surface, for example which output and what region of the screen should
be used.
If the surface was already maximized, the compositor will still emit
a configure event with the "maximized" state.
If the surface is in a fullscreen state, this request has no direct
effect. It may alter the state the surface is returned to when
unmaximized unless overridden by the compositor.
</description>
</request>
<request name="unset_maximized">
<description summary="unmaximize the window">
Unmaximize the surface.
After requesting that the surface should be unmaximized, the compositor
will respond by emitting a configure event. Whether this actually
un-maximizes the window is subject to compositor policies.
If available and applicable, the compositor will include the window
geometry dimensions the window had prior to being maximized in the
configure event. The client must then update its content, drawing it in
the configured state. The client must also acknowledge the configure
when committing the new content (see ack_configure).
It is up to the compositor to position the surface after it was
unmaximized; usually the position the surface had before maximizing, if
applicable.
If the surface was already not maximized, the compositor will still
emit a configure event without the "maximized" state.
If the surface is in a fullscreen state, this request has no direct
effect. It may alter the state the surface is returned to when
unmaximized unless overridden by the compositor.
</description>
</request>
<request name="set_fullscreen">
<description summary="set the window as fullscreen on an output">
Make the surface fullscreen.
After requesting that the surface should be fullscreened, the
compositor will respond by emitting a configure event. Whether the
client is actually put into a fullscreen state is subject to compositor
policies. The client must also acknowledge the configure when
committing the new content (see ack_configure).
The output passed by the request indicates the client's preference as
to which display it should be set fullscreen on. If this value is NULL,
it's up to the compositor to choose which display will be used to map
this surface.
If the surface doesn't cover the whole output, the compositor will
position the surface in the center of the output and compensate with
with border fill covering the rest of the output. The content of the
border fill is undefined, but should be assumed to be in some way that
attempts to blend into the surrounding area (e.g. solid black).
If the fullscreened surface is not opaque, the compositor must make
sure that other screen content not part of the same surface tree (made
up of subsurfaces, popups or similarly coupled surfaces) are not
visible below the fullscreened surface.
</description>
<arg name="output" type="object" interface="wl_output" allow-null="true"/>
</request>
<request name="unset_fullscreen">
<description summary="unset the window as fullscreen">
Make the surface no longer fullscreen.
After requesting that the surface should be unfullscreened, the
compositor will respond by emitting a configure event.
Whether this actually removes the fullscreen state of the client is
subject to compositor policies.
Making a surface unfullscreen sets states for the surface based on the following:
* the state(s) it may have had before becoming fullscreen
* any state(s) decided by the compositor
* any state(s) requested by the client while the surface was fullscreen
The compositor may include the previous window geometry dimensions in
the configure event, if applicable.
The client must also acknowledge the configure when committing the new
content (see ack_configure).
</description>
</request>
<request name="set_minimized">
<description summary="set the window as minimized">
Request that the compositor minimize your surface. There is no
way to know if the surface is currently minimized, nor is there
any way to unset minimization on this surface.
If you are looking to throttle redrawing when minimized, please
instead use the wl_surface.frame event for this, as this will
also work with live previews on windows in Alt-Tab, Expose or
similar compositor features.
</description>
</request>
<event name="configure">
<description summary="suggest a surface change">
This configure event asks the client to resize its toplevel surface or
to change its state. The configured state should not be applied
immediately. See xdg_surface.configure for details.
The width and height arguments specify a hint to the window
about how its surface should be resized in window geometry
coordinates. See set_window_geometry.
If the width or height arguments are zero, it means the client
should decide its own window dimension. This may happen when the
compositor needs to configure the state of the surface but doesn't
have any information about any previous or expected dimension.
The states listed in the event specify how the width/height
arguments should be interpreted, and possibly how it should be
drawn.
Clients must send an ack_configure in response to this event. See
xdg_surface.configure and xdg_surface.ack_configure for details.
</description>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
<arg name="states" type="array"/>
</event>
<event name="close">
<description summary="surface wants to be closed">
The close event is sent by the compositor when the user
wants the surface to be closed. This should be equivalent to
the user clicking the close button in client-side decorations,
if your application has any.
This is only a request that the user intends to close the
window. The client may choose to ignore this request, or show
a dialog to ask the user to save their data, etc.
</description>
</event>
<!-- Version 4 additions -->
<event name="configure_bounds" since="4">
<description summary="recommended window geometry bounds">
The configure_bounds event may be sent prior to a xdg_toplevel.configure
event to communicate the bounds a window geometry size is recommended
to constrain to.
The passed width and height are in surface coordinate space. If width
and height are 0, it means bounds is unknown and equivalent to as if no
configure_bounds event was ever sent for this surface.
The bounds can for example correspond to the size of a monitor excluding
any panels or other shell components, so that a surface isn't created in
a way that it cannot fit.
The bounds may change at any point, and in such a case, a new
xdg_toplevel.configure_bounds will be sent, followed by
xdg_toplevel.configure and xdg_surface.configure.
</description>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
</event>
<!-- Version 5 additions -->
<enum name="wm_capabilities" since="5">
<entry name="window_menu" value="1" summary="show_window_menu is available"/>
<entry name="maximize" value="2" summary="set_maximized and unset_maximized are available"/>
<entry name="fullscreen" value="3" summary="set_fullscreen and unset_fullscreen are available"/>
<entry name="minimize" value="4" summary="set_minimized is available"/>
</enum>
<event name="wm_capabilities" since="5">
<description summary="compositor capabilities">
This event advertises the capabilities supported by the compositor. If
a capability isn't supported, clients should hide or disable the UI
elements that expose this functionality. For instance, if the
compositor doesn't advertise support for minimized toplevels, a button
triggering the set_minimized request should not be displayed.
The compositor will ignore requests it doesn't support. For instance,
a compositor which doesn't advertise support for minimized will ignore
set_minimized requests.
Compositors must send this event once before the first
xdg_surface.configure event. When the capabilities change, compositors
must send this event again and then send an xdg_surface.configure
event.
The configured state should not be applied immediately. See
xdg_surface.configure for details.
The capabilities are sent as an array of 32-bit unsigned integers in
native endianness.
</description>
<arg name="capabilities" type="array" summary="array of 32-bit capabilities"/>
</event>
</interface>
<interface name="xdg_popup" version="7">
<description summary="short-lived, popup surfaces for menus">
A popup surface is a short-lived, temporary surface. It can be used to
implement for example menus, popovers, tooltips and other similar user
interface concepts.
A popup can be made to take an explicit grab. See xdg_popup.grab for
details.
When the popup is dismissed, a popup_done event will be sent out, and at
the same time the surface will be unmapped. See the xdg_popup.popup_done
event for details.
Explicitly destroying the xdg_popup object will also dismiss the popup and
unmap the surface. Clients that want to dismiss the popup when another
surface of their own is clicked should dismiss the popup using the destroy
request.
A newly created xdg_popup will be stacked on top of all previously created
xdg_popup surfaces associated with the same xdg_toplevel.
The parent of an xdg_popup must be mapped (see the xdg_surface
description) before the xdg_popup itself.
The client must call wl_surface.commit on the corresponding wl_surface
for the xdg_popup state to take effect.
</description>
<enum name="error">
<entry name="invalid_grab" value="0"
summary="tried to grab after being mapped"/>
</enum>
<request name="destroy" type="destructor">
<description summary="remove xdg_popup interface">
This destroys the popup. Explicitly destroying the xdg_popup
object will also dismiss the popup, and unmap the surface.
If this xdg_popup is not the "topmost" popup, the
xdg_wm_base.not_the_topmost_popup protocol error will be sent.
</description>
</request>
<request name="grab">
<description summary="make the popup take an explicit grab">
This request makes the created popup take an explicit grab. An explicit
grab will be dismissed when the user dismisses the popup, or when the
client destroys the xdg_popup. This can be done by the user clicking
outside the surface, using the keyboard, or even locking the screen
through closing the lid or a timeout.
If the compositor denies the grab, the popup will be immediately
dismissed.
This request must be used in response to some sort of user action like a
button press, key press, or touch down event. The serial number of the
event should be passed as 'serial'.
The parent of a grabbing popup must either be an xdg_toplevel surface or
another xdg_popup with an explicit grab. If the parent is another
xdg_popup it means that the popups are nested, with this popup now being
the topmost popup.
Nested popups must be destroyed in the reverse order they were created
in, e.g. the only popup you are allowed to destroy at all times is the
topmost one.
When compositors choose to dismiss a popup, they may dismiss every
nested grabbing popup as well. When a compositor dismisses popups, it
will follow the same dismissing order as required from the client.
If the topmost grabbing popup is destroyed, the grab will be returned to
the parent of the popup, if that parent previously had an explicit grab.
If the parent is a grabbing popup which has already been dismissed, this
popup will be immediately dismissed. If the parent is a popup that did
not take an explicit grab, an error will be raised.
During a popup grab, the client owning the grab will receive pointer
and touch events for all their surfaces as normal (similar to an
"owner-events" grab in X11 parlance), while the top most grabbing popup
will always have keyboard focus.
</description>
<arg name="seat" type="object" interface="wl_seat"
summary="the wl_seat of the user event"/>
<arg name="serial" type="uint" summary="the serial of the user event"/>
</request>
<event name="configure">
<description summary="configure the popup surface">
This event asks the popup surface to configure itself given the
configuration. The configured state should not be applied immediately.
See xdg_surface.configure for details.
The x and y arguments represent the position the popup was placed at
given the xdg_positioner rule, relative to the upper left corner of the
window geometry of the parent surface.
For version 2 or older, the configure event for an xdg_popup is only
ever sent once for the initial configuration. Starting with version 3,
it may be sent again if the popup is setup with an xdg_positioner with
set_reactive requested, or in response to xdg_popup.reposition requests.
</description>
<arg name="x" type="int"
summary="x position relative to parent surface window geometry"/>
<arg name="y" type="int"
summary="y position relative to parent surface window geometry"/>
<arg name="width" type="int" summary="window geometry width"/>
<arg name="height" type="int" summary="window geometry height"/>
</event>
<event name="popup_done">
<description summary="popup interaction is done">
The popup_done event is sent out when a popup is dismissed by the
compositor. The client should destroy the xdg_popup object at this
point.
</description>
</event>
<!-- Version 3 additions -->
<request name="reposition" since="3">
<description summary="recalculate the popup's location">
Reposition an already-mapped popup. The popup will be placed given the
details in the passed xdg_positioner object, and a
xdg_popup.repositioned followed by xdg_popup.configure and
xdg_surface.configure will be emitted in response. Any parameters set
by the previous positioner will be discarded.
The passed token will be sent in the corresponding
xdg_popup.repositioned event. The new popup position will not take
effect until the corresponding configure event is acknowledged by the
client. See xdg_popup.repositioned for details. The token itself is
opaque, and has no other special meaning.
If multiple reposition requests are sent, the compositor may skip all
but the last one.
If the popup is repositioned in response to a configure event for its
parent, the client should send an xdg_positioner.set_parent_configure
and possibly an xdg_positioner.set_parent_size request to allow the
compositor to properly constrain the popup.
If the popup is repositioned together with a parent that is being
resized, but not in response to a configure event, the client should
send an xdg_positioner.set_parent_size request.
</description>
<arg name="positioner" type="object" interface="xdg_positioner"/>
<arg name="token" type="uint" summary="reposition request token"/>
</request>
<event name="repositioned" since="3">
<description summary="signal the completion of a repositioned request">
The repositioned event is sent as part of a popup configuration
sequence, together with xdg_popup.configure and lastly
xdg_surface.configure to notify the completion of a reposition request.
The repositioned event is to notify about the completion of a
xdg_popup.reposition request. The token argument is the token passed
in the xdg_popup.reposition request.
Immediately after this event is emitted, xdg_popup.configure and
xdg_surface.configure will be sent with the updated size and position,
as well as a new configure serial.
The client should optionally update the content of the popup, but must
acknowledge the new popup configuration for the new position to take
effect. See xdg_surface.ack_configure for details.
</description>
<arg name="token" type="uint" summary="reposition request token"/>
</event>
</interface>
</protocol>