raylib 5.0.0.5__cp313-cp313-manylinux2014_aarch64.whl → 5.5.0.3__cp313-cp313-manylinux2014_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of raylib might be problematic. Click here for more details.

raylib/glfw3.h.modified CHANGED
@@ -169,9 +169,11 @@
169
169
  *
170
170
  * @ingroup input
171
171
  * @{ */
172
+ /*! @ingroup input
173
+ */
172
174
  /*! @} */
173
- /*! @defgroup keys Keyboard keys
174
- * @brief Keyboard key IDs.
175
+ /*! @defgroup keys Keyboard key tokens
176
+ * @brief Keyboard key tokens.
175
177
  *
176
178
  * See [key input](@ref input_key) for how these are used.
177
179
  *
@@ -193,7 +195,6 @@
193
195
  * @ingroup input
194
196
  * @{
195
197
  */
196
- /* The unknown key */
197
198
  /* Printable keys */
198
199
  /* Function keys */
199
200
  /*! @} */
@@ -420,11 +421,11 @@
420
421
  */
421
422
  /*! @brief Platform unavailable or no matching platform was found.
422
423
  *
423
- * If emitted during initialization, no matching platform was found. If @ref
424
- * GLFW_PLATFORM is set to `GLFW_ANY_PLATFORM`, GLFW could not detect any of the
425
- * platforms supported by this library binary, except for the Null platform. If set to
426
- * a specific platform, it is either not supported by this library binary or GLFW was not
427
- * able to detect it.
424
+ * If emitted during initialization, no matching platform was found. If the @ref
425
+ * GLFW_PLATFORM init hint was set to `GLFW_ANY_PLATFORM`, GLFW could not detect any of
426
+ * the platforms supported by this library binary, except for the Null platform. If the
427
+ * init hint was set to a specific platform, it is either not supported by this library
428
+ * binary or GLFW was not able to detect it.
428
429
  *
429
430
  * If emitted by a native access function, GLFW was initialized for a different platform
430
431
  * than the function is for.
@@ -640,8 +641,14 @@
640
641
  /*! @brief Window content area scaling window
641
642
  * [window hint](@ref GLFW_SCALE_TO_MONITOR).
642
643
  */
643
- /*! @brief macOS specific
644
- * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).
644
+ /*! @brief Window framebuffer scaling
645
+ * [window hint](@ref GLFW_SCALE_FRAMEBUFFER_hint).
646
+ */
647
+ /*! @brief Legacy name for compatibility.
648
+ *
649
+ * This is an alias for the
650
+ * [GLFW_SCALE_FRAMEBUFFER](@ref GLFW_SCALE_FRAMEBUFFER_hint) window hint for
651
+ * compatibility with earlier versions.
645
652
  */
646
653
  /*! @brief macOS specific
647
654
  * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint).
@@ -655,6 +662,8 @@
655
662
  /*! @brief X11 specific
656
663
  * [window hint](@ref GLFW_X11_CLASS_NAME_hint).
657
664
  */
665
+ /*! @brief Win32 specific [window hint](@ref GLFW_WIN32_SHOWDEFAULT_hint).
666
+ */
658
667
  /*! @brief Wayland specific
659
668
  * [window hint](@ref GLFW_WAYLAND_APP_ID_hint).
660
669
  *
@@ -703,11 +712,11 @@
703
712
  * @note @macos This shape is provided by a private system API and may fail
704
713
  * with @ref GLFW_CURSOR_UNAVAILABLE in the future.
705
714
  *
706
- * @note @x11 This shape is provided by a newer standard not supported by all
707
- * cursor themes.
708
- *
709
715
  * @note @wayland This shape is provided by a newer standard not supported by
710
716
  * all cursor themes.
717
+ *
718
+ * @note @x11 This shape is provided by a newer standard not supported by all
719
+ * cursor themes.
711
720
  */
712
721
  /*! @brief The top-right to bottom-left diagonal resize/move arrow shape.
713
722
  *
@@ -717,11 +726,11 @@
717
726
  * @note @macos This shape is provided by a private system API and may fail
718
727
  * with @ref GLFW_CURSOR_UNAVAILABLE in the future.
719
728
  *
720
- * @note @x11 This shape is provided by a newer standard not supported by all
721
- * cursor themes.
722
- *
723
729
  * @note @wayland This shape is provided by a newer standard not supported by
724
730
  * all cursor themes.
731
+ *
732
+ * @note @x11 This shape is provided by a newer standard not supported by all
733
+ * cursor themes.
725
734
  */
726
735
  /*! @brief The omni-directional resize/move cursor shape.
727
736
  *
@@ -733,11 +742,11 @@
733
742
  * The operation-not-allowed shape. This is usually a circle with a diagonal
734
743
  * line through it.
735
744
  *
736
- * @note @x11 This shape is provided by a newer standard not supported by all
737
- * cursor themes.
738
- *
739
745
  * @note @wayland This shape is provided by a newer standard not supported by
740
746
  * all cursor themes.
747
+ *
748
+ * @note @x11 This shape is provided by a newer standard not supported by all
749
+ * cursor themes.
741
750
  */
742
751
  /*! @brief Legacy name for compatibility.
743
752
  *
@@ -778,6 +787,10 @@
778
787
  *
779
788
  * X11 specific [init hint](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint).
780
789
  */
790
+ /*! @brief Wayland specific init hint.
791
+ *
792
+ * Wayland specific [init hint](@ref GLFW_WAYLAND_LIBDECOR_hint).
793
+ */
781
794
  /*! @} */
782
795
  /*! @addtogroup init
783
796
  * @{ */
@@ -860,16 +873,25 @@ typedef struct GLFWcursor GLFWcursor;
860
873
  * or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
861
874
  * failures gracefully yet.
862
875
  *
863
- * This function may be called during @ref glfwInit but before the library is
864
- * flagged as initialized, as well as during @ref glfwTerminate after the
865
- * library is no longer flagged as initialized.
876
+ * This function must support being called during @ref glfwInit but before the library is
877
+ * flagged as initialized, as well as during @ref glfwTerminate after the library is no
878
+ * longer flagged as initialized.
879
+ *
880
+ * Any memory allocated via this function will be deallocated via the same allocator
881
+ * during library termination or earlier.
866
882
  *
867
- * Any memory allocated by this function will be deallocated during library
868
- * termination or earlier.
883
+ * Any memory allocated via this function must be suitably aligned for any object type.
884
+ * If you are using C99 or earlier, this alignment is platform-dependent but will be the
885
+ * same as what `malloc` provides. If you are using C11 or later, this is the value of
886
+ * `alignof(max_align_t)`.
869
887
  *
870
888
  * The size will always be greater than zero. Allocations of size zero are filtered out
871
889
  * before reaching the custom allocator.
872
890
  *
891
+ * If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
892
+ *
893
+ * This function must not call any GLFW function.
894
+ *
873
895
  * @param[in] size The minimum size, in bytes, of the memory block.
874
896
  * @param[in] user The user-defined pointer from the allocator.
875
897
  * @return The address of the newly allocated memory block, or `NULL` if an
@@ -880,7 +902,8 @@ typedef struct GLFWcursor GLFWcursor;
880
902
  *
881
903
  * @reentrancy This function should not call any GLFW function.
882
904
  *
883
- * @thread_safety This function may be called from any thread that calls GLFW functions.
905
+ * @thread_safety This function must support being called from any thread that calls GLFW
906
+ * functions.
884
907
  *
885
908
  * @sa @ref init_allocator
886
909
  * @sa @ref GLFWallocator
@@ -902,16 +925,26 @@ typedef void* (* GLFWallocatefun)(size_t size, void* user);
902
925
  * `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
903
926
  * failures gracefully yet.
904
927
  *
905
- * This function may be called during @ref glfwInit but before the library is
906
- * flagged as initialized, as well as during @ref glfwTerminate after the
907
- * library is no longer flagged as initialized.
928
+ * This function must support being called during @ref glfwInit but before the library is
929
+ * flagged as initialized, as well as during @ref glfwTerminate after the library is no
930
+ * longer flagged as initialized.
908
931
  *
909
- * Any memory allocated by this function will be deallocated during library
910
- * termination or earlier.
932
+ * Any memory allocated via this function will be deallocated via the same allocator
933
+ * during library termination or earlier.
934
+ *
935
+ * Any memory allocated via this function must be suitably aligned for any object type.
936
+ * If you are using C99 or earlier, this alignment is platform-dependent but will be the
937
+ * same as what `realloc` provides. If you are using C11 or later, this is the value of
938
+ * `alignof(max_align_t)`.
911
939
  *
912
940
  * The block address will never be `NULL` and the size will always be greater than zero.
913
- * Reallocations of a block to size zero are converted into deallocations. Reallocations
914
- * of `NULL` to a non-zero size are converted into regular allocations.
941
+ * Reallocations of a block to size zero are converted into deallocations before reaching
942
+ * the custom allocator. Reallocations of `NULL` to a non-zero size are converted into
943
+ * regular allocations before reaching the custom allocator.
944
+ *
945
+ * If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
946
+ *
947
+ * This function must not call any GLFW function.
915
948
  *
916
949
  * @param[in] block The address of the memory block to reallocate.
917
950
  * @param[in] size The new minimum size, in bytes, of the memory block.
@@ -924,7 +957,8 @@ typedef void* (* GLFWallocatefun)(size_t size, void* user);
924
957
  *
925
958
  * @reentrancy This function should not call any GLFW function.
926
959
  *
927
- * @thread_safety This function may be called from any thread that calls GLFW functions.
960
+ * @thread_safety This function must support being called from any thread that calls GLFW
961
+ * functions.
928
962
  *
929
963
  * @sa @ref init_allocator
930
964
  * @sa @ref GLFWallocator
@@ -945,13 +979,17 @@ typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user);
945
979
  * This function may deallocate the specified memory block. This memory block
946
980
  * will have been allocated with the same allocator.
947
981
  *
948
- * This function may be called during @ref glfwInit but before the library is
949
- * flagged as initialized, as well as during @ref glfwTerminate after the
950
- * library is no longer flagged as initialized.
982
+ * This function must support being called during @ref glfwInit but before the library is
983
+ * flagged as initialized, as well as during @ref glfwTerminate after the library is no
984
+ * longer flagged as initialized.
951
985
  *
952
986
  * The block address will never be `NULL`. Deallocations of `NULL` are filtered out
953
987
  * before reaching the custom allocator.
954
988
  *
989
+ * If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
990
+ *
991
+ * This function must not call any GLFW function.
992
+ *
955
993
  * @param[in] block The address of the memory block to deallocate.
956
994
  * @param[in] user The user-defined pointer from the allocator.
957
995
  *
@@ -960,7 +998,8 @@ typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user);
960
998
  *
961
999
  * @reentrancy This function should not call any GLFW function.
962
1000
  *
963
- * @thread_safety This function may be called from any thread that calls GLFW functions.
1001
+ * @thread_safety This function must support being called from any thread that calls GLFW
1002
+ * functions.
964
1003
  *
965
1004
  * @sa @ref init_allocator
966
1005
  * @sa @ref GLFWallocator
@@ -1503,7 +1542,10 @@ typedef struct GLFWgamepadstate
1503
1542
  */
1504
1543
  float axes[6];
1505
1544
  } GLFWgamepadstate;
1506
- /*! @brief
1545
+ /*! @brief Custom heap memory allocator.
1546
+ *
1547
+ * This describes a custom heap memory allocator for GLFW. To set an allocator, pass it
1548
+ * to @ref glfwInitAllocator before initializing the library.
1507
1549
  *
1508
1550
  * @sa @ref init_allocator
1509
1551
  * @sa @ref glfwInitAllocator
@@ -1514,9 +1556,21 @@ typedef struct GLFWgamepadstate
1514
1556
  */
1515
1557
  typedef struct GLFWallocator
1516
1558
  {
1559
+ /*! The memory allocation function. See @ref GLFWallocatefun for details about
1560
+ * allocation function.
1561
+ */
1517
1562
  GLFWallocatefun allocate;
1563
+ /*! The memory reallocation function. See @ref GLFWreallocatefun for details about
1564
+ * reallocation function.
1565
+ */
1518
1566
  GLFWreallocatefun reallocate;
1567
+ /*! The memory deallocation function. See @ref GLFWdeallocatefun for details about
1568
+ * deallocation function.
1569
+ */
1519
1570
  GLFWdeallocatefun deallocate;
1571
+ /*! The user pointer for this custom allocator. This value will be passed to the
1572
+ * allocator functions.
1573
+ */
1520
1574
  void* user;
1521
1575
  } GLFWallocator;
1522
1576
  /*************************************************************************
@@ -1558,6 +1612,13 @@ typedef struct GLFWallocator
1558
1612
  * and dock icon can be disabled entirely with the @ref GLFW_COCOA_MENUBAR init
1559
1613
  * hint.
1560
1614
  *
1615
+ * @remark __Wayland, X11:__ If the library was compiled with support for both
1616
+ * Wayland and X11, and the @ref GLFW_PLATFORM init hint is set to
1617
+ * `GLFW_ANY_PLATFORM`, the `XDG_SESSION_TYPE` environment variable affects
1618
+ * which platform is picked. If the environment variable is not set, or is set
1619
+ * to something other than `wayland` or `x11`, the regular detection mechanism
1620
+ * will be used instead.
1621
+ *
1561
1622
  * @remark @x11 This function will set the `LC_CTYPE` category of the
1562
1623
  * application locale according to the current environment if that category is
1563
1624
  * still "C". This is because the "C" locale breaks Unicode text input.
@@ -1643,8 +1704,12 @@ typedef struct GLFWallocator
1643
1704
  * To use the default allocator, call this function with a `NULL` argument.
1644
1705
  *
1645
1706
  * If you specify an allocator struct, every member must be a valid function
1646
- * pointer. If any member is `NULL`, this function emits @ref
1647
- * GLFW_INVALID_VALUE and the init allocator is unchanged.
1707
+ * pointer. If any member is `NULL`, this function will emit @ref
1708
+ * GLFW_INVALID_VALUE and the init allocator will be unchanged.
1709
+ *
1710
+ * The functions in the allocator must fulfil a number of requirements. See the
1711
+ * documentation for @ref GLFWallocatefun, @ref GLFWreallocatefun and @ref
1712
+ * GLFWdeallocatefun for details.
1648
1713
  *
1649
1714
  * @param[in] allocator The allocator to use at the next initialization, or
1650
1715
  * `NULL` to use the default one.
@@ -1952,9 +2017,10 @@ typedef struct GLFWallocator
1952
2017
  * specified monitor.
1953
2018
  *
1954
2019
  * Some platforms do not provide accurate monitor size information, either
1955
- * because the monitor
1956
- * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data)
1957
- * data is incorrect or because the driver does not report it accurately.
2020
+ * because the monitor [EDID][] data is incorrect or because the driver does
2021
+ * not report it accurately.
2022
+ *
2023
+ * [EDID]: https://en.wikipedia.org/wiki/Extended_display_identification_data
1958
2024
  *
1959
2025
  * Any or all of the size arguments may be `NULL`. If an error occurs, all
1960
2026
  * non-`NULL` size arguments will be set to zero.
@@ -2000,6 +2066,9 @@ typedef struct GLFWallocator
2000
2066
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2001
2067
  * GLFW_PLATFORM_ERROR.
2002
2068
  *
2069
+ * @remark @wayland Fractional scaling information is not yet available for
2070
+ * monitors, so this function only returns integer content scales.
2071
+ *
2003
2072
  * @thread_safety This function must only be called from the main thread.
2004
2073
  *
2005
2074
  * @sa @ref monitor_scale
@@ -2189,11 +2258,11 @@ typedef struct GLFWallocator
2189
2258
  * @param[in] monitor The monitor whose gamma ramp to set.
2190
2259
  * @param[in] gamma The desired exponent.
2191
2260
  *
2192
- * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2193
- * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
2261
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_INVALID_VALUE,
2262
+ * @ref GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
2194
2263
  *
2195
2264
  * @remark @wayland Gamma handling is a privileged protocol, this function
2196
- * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.
2265
+ * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE.
2197
2266
  *
2198
2267
  * @thread_safety This function must only be called from the main thread.
2199
2268
  *
@@ -2212,11 +2281,11 @@ typedef struct GLFWallocator
2212
2281
  * @return The current gamma ramp, or `NULL` if an
2213
2282
  * [error](@ref error_handling) occurred.
2214
2283
  *
2215
- * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2216
- * GLFW_PLATFORM_ERROR.
2284
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR
2285
+ * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
2217
2286
  *
2218
2287
  * @remark @wayland Gamma handling is a privileged protocol, this function
2219
- * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while
2288
+ * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE while
2220
2289
  * returning `NULL`.
2221
2290
  *
2222
2291
  * @pointer_lifetime The returned structure and its arrays are allocated and
@@ -2250,8 +2319,8 @@ typedef struct GLFWallocator
2250
2319
  * @param[in] monitor The monitor whose gamma ramp to set.
2251
2320
  * @param[in] ramp The gamma ramp to use.
2252
2321
  *
2253
- * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2254
- * GLFW_PLATFORM_ERROR.
2322
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR
2323
+ * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
2255
2324
  *
2256
2325
  * @remark The size of the specified gamma ramp should match the size of the
2257
2326
  * current ramp for that monitor.
@@ -2259,7 +2328,7 @@ typedef struct GLFWallocator
2259
2328
  * @remark @win32 The gamma ramp size must be 256.
2260
2329
  *
2261
2330
  * @remark @wayland Gamma handling is a privileged protocol, this function
2262
- * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.
2331
+ * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE.
2263
2332
  *
2264
2333
  * @pointer_lifetime The specified gamma ramp is copied before this function
2265
2334
  * returns.
@@ -2427,8 +2496,8 @@ typedef struct GLFWallocator
2427
2496
  *
2428
2497
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2429
2498
  * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref
2430
- * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref
2431
- * GLFW_PLATFORM_ERROR.
2499
+ * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE, @ref
2500
+ * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
2432
2501
  *
2433
2502
  * @remark @win32 Window creation will fail if the Microsoft GDI software
2434
2503
  * OpenGL implementation is the only one available.
@@ -2450,23 +2519,35 @@ typedef struct GLFWallocator
2450
2519
  * @remark @macos The GLFW window has no icon, as it is not a document
2451
2520
  * window, but the dock icon will be the same as the application bundle's icon.
2452
2521
  * For more information on bundles, see the
2453
- * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
2454
- * in the Mac Developer Library.
2522
+ * [Bundle Programming Guide][bundle-guide] in the Mac Developer Library.
2523
+ *
2524
+ * [bundle-guide]: https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/
2455
2525
  *
2456
2526
  * @remark @macos On OS X 10.10 and later the window frame will not be rendered
2457
2527
  * at full resolution on Retina displays unless the
2458
- * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
2528
+ * [GLFW_SCALE_FRAMEBUFFER](@ref GLFW_SCALE_FRAMEBUFFER_hint)
2459
2529
  * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the
2460
2530
  * application bundle's `Info.plist`. For more information, see
2461
- * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)
2462
- * in the Mac Developer Library. The GLFW test and example programs use
2463
- * a custom `Info.plist` template for this, which can be found as
2464
- * `CMake/Info.plist.in` in the source tree.
2531
+ * [High Resolution Guidelines for OS X][hidpi-guide] in the Mac Developer
2532
+ * Library. The GLFW test and example programs use a custom `Info.plist`
2533
+ * template for this, which can be found as `CMake/Info.plist.in` in the source
2534
+ * tree.
2535
+ *
2536
+ * [hidpi-guide]: https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html
2465
2537
  *
2466
2538
  * @remark @macos When activating frame autosaving with
2467
2539
  * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified
2468
2540
  * window size and position may be overridden by previously saved values.
2469
2541
  *
2542
+ * @remark @wayland GLFW uses [libdecor][] where available to create its window
2543
+ * decorations. This in turn uses server-side XDG decorations where available
2544
+ * and provides high quality client-side decorations on compositors like GNOME.
2545
+ * If both XDG decorations and libdecor are unavailable, GLFW falls back to
2546
+ * a very simple set of window decorations that only support moving, resizing
2547
+ * and the window manager's right-click menu.
2548
+ *
2549
+ * [libdecor]: https://gitlab.freedesktop.org/libdecor/libdecor
2550
+ *
2470
2551
  * @remark @x11 Some window managers will not respect the placement of
2471
2552
  * initially hidden windows.
2472
2553
  *
@@ -2483,20 +2564,6 @@ typedef struct GLFWallocator
2483
2564
  * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to
2484
2565
  * override this.
2485
2566
  *
2486
- * @remark @wayland Compositors should implement the xdg-decoration protocol
2487
- * for GLFW to decorate the window properly. If this protocol isn't
2488
- * supported, or if the compositor prefers client-side decorations, a very
2489
- * simple fallback frame will be drawn using the wp_viewporter protocol. A
2490
- * compositor can still emit close, maximize or fullscreen events, using for
2491
- * instance a keybind mechanism. If neither of these protocols is supported,
2492
- * the window won't be decorated.
2493
- *
2494
- * @remark @wayland A full screen window will not attempt to change the mode,
2495
- * no matter what the requested size or refresh rate.
2496
- *
2497
- * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol
2498
- * to be implemented in the user's compositor.
2499
- *
2500
2567
  * @thread_safety This function must only be called from the main thread.
2501
2568
  *
2502
2569
  * @sa @ref window_creation
@@ -2575,6 +2642,37 @@ typedef struct GLFWallocator
2575
2642
  * @ingroup window
2576
2643
  */
2577
2644
  void glfwSetWindowShouldClose(GLFWwindow* window, int value);
2645
+ /*! @brief Returns the title of the specified window.
2646
+ *
2647
+ * This function returns the window title, encoded as UTF-8, of the specified
2648
+ * window. This is the title set previously by @ref glfwCreateWindow
2649
+ * or @ref glfwSetWindowTitle.
2650
+ *
2651
+ * @param[in] window The window to query.
2652
+ * @return The UTF-8 encoded window title, or `NULL` if an
2653
+ * [error](@ref error_handling) occurred.
2654
+ *
2655
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2656
+ *
2657
+ * @remark The returned title is currently a copy of the title last set by @ref
2658
+ * glfwCreateWindow or @ref glfwSetWindowTitle. It does not include any
2659
+ * additional text which may be appended by the platform or another program.
2660
+ *
2661
+ * @pointer_lifetime The returned string is allocated and freed by GLFW. You
2662
+ * should not free it yourself. It is valid until the next call to @ref
2663
+ * glfwGetWindowTitle or @ref glfwSetWindowTitle, or until the library is
2664
+ * terminated.
2665
+ *
2666
+ * @thread_safety This function must only be called from the main thread.
2667
+ *
2668
+ * @sa @ref window_title
2669
+ * @sa @ref glfwSetWindowTitle
2670
+ *
2671
+ * @since Added in version 3.4.
2672
+ *
2673
+ * @ingroup window
2674
+ */
2675
+ const char* glfwGetWindowTitle(GLFWwindow* window);
2578
2676
  /*! @brief Sets the title of the specified window.
2579
2677
  *
2580
2678
  * This function sets the window title, encoded as UTF-8, of the specified
@@ -2592,6 +2690,7 @@ typedef struct GLFWallocator
2592
2690
  * @thread_safety This function must only be called from the main thread.
2593
2691
  *
2594
2692
  * @sa @ref window_title
2693
+ * @sa @ref glfwGetWindowTitle
2595
2694
  *
2596
2695
  * @since Added in version 1.0.
2597
2696
  * @glfw3 Added window handle parameter.
@@ -2630,8 +2729,9 @@ typedef struct GLFWallocator
2630
2729
  * @remark @macos Regular windows do not have icons on macOS. This function
2631
2730
  * will emit @ref GLFW_FEATURE_UNAVAILABLE. The dock icon will be the same as
2632
2731
  * the application bundle's icon. For more information on bundles, see the
2633
- * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
2634
- * in the Mac Developer Library.
2732
+ * [Bundle Programming Guide][bundle-guide] in the Mac Developer Library.
2733
+ *
2734
+ * [bundle-guide]: https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/
2635
2735
  *
2636
2736
  * @remark @wayland There is no existing protocol to change an icon, the
2637
2737
  * window will thus inherit the one defined in the application's desktop file.
@@ -2849,9 +2949,6 @@ typedef struct GLFWallocator
2849
2949
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2850
2950
  * GLFW_PLATFORM_ERROR.
2851
2951
  *
2852
- * @remark @wayland A full screen window will not attempt to change the mode,
2853
- * no matter what the requested size.
2854
- *
2855
2952
  * @thread_safety This function must only be called from the main thread.
2856
2953
  *
2857
2954
  * @sa @ref window_size
@@ -3172,11 +3269,11 @@ typedef struct GLFWallocator
3172
3269
  *
3173
3270
  * @param[in] window The window to give input focus.
3174
3271
  *
3175
- * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3176
- * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
3272
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3273
+ * GLFW_PLATFORM_ERROR.
3177
3274
  *
3178
- * @remark @wayland It is not possible for an application to set the input
3179
- * focus. This function will emit @ref GLFW_FEATURE_UNAVAILABLE.
3275
+ * @remark @wayland The compositor will likely ignore focus requests unless
3276
+ * another window created by the same application already has input focus.
3180
3277
  *
3181
3278
  * @thread_safety This function must only be called from the main thread.
3182
3279
  *
@@ -3278,9 +3375,6 @@ typedef struct GLFWallocator
3278
3375
  * @remark @wayland The desired window position is ignored, as there is no way
3279
3376
  * for an application to set this property.
3280
3377
  *
3281
- * @remark @wayland Setting the window to full screen will not attempt to
3282
- * change the mode, no matter what the requested size or refresh rate.
3283
- *
3284
3378
  * @thread_safety This function must only be called from the main thread.
3285
3379
  *
3286
3380
  * @sa @ref window_monitor
@@ -3351,11 +3445,15 @@ typedef struct GLFWallocator
3351
3445
  * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`.
3352
3446
  *
3353
3447
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3354
- * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
3448
+ * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref
3449
+ * GLFW_FEATURE_UNAVAILABLE (see remarks).
3355
3450
  *
3356
3451
  * @remark Calling @ref glfwGetWindowAttrib will always return the latest
3357
3452
  * value, even if that value is ignored by the current mode of the window.
3358
3453
  *
3454
+ * @remark @wayland The [GLFW_FLOATING](@ref GLFW_FLOATING_attrib) window attribute is
3455
+ * not supported. Setting this will emit @ref GLFW_FEATURE_UNAVAILABLE.
3456
+ *
3359
3457
  * @thread_safety This function must only be called from the main thread.
3360
3458
  *
3361
3459
  * @sa @ref window_attribs
@@ -4011,8 +4109,8 @@ typedef struct GLFWallocator
4011
4109
  * @param[in] scancode The scancode of the key to query.
4012
4110
  * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`.
4013
4111
  *
4014
- * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4015
- * GLFW_PLATFORM_ERROR.
4112
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4113
+ * GLFW_INVALID_VALUE, @ref GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4016
4114
  *
4017
4115
  * @remark The contents of the returned string may change when a keyboard
4018
4116
  * layout change event is received.
@@ -4033,15 +4131,18 @@ typedef struct GLFWallocator
4033
4131
  *
4034
4132
  * This function returns the platform-specific scancode of the specified key.
4035
4133
  *
4036
- * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this
4037
- * method will return `-1`.
4134
+ * If the specified [key token](@ref keys) corresponds to a physical key not
4135
+ * supported on the current platform then this method will return `-1`.
4136
+ * Calling this function with anything other than a key token will return `-1`
4137
+ * and generate a @ref GLFW_INVALID_ENUM error.
4038
4138
  *
4039
- * @param[in] key Any [named key](@ref keys).
4040
- * @return The platform-specific scancode for the key, or `-1` if an
4041
- * [error](@ref error_handling) occurred.
4139
+ * @param[in] key Any [key token](@ref keys).
4140
+ * @return The platform-specific scancode for the key, or `-1` if the key is
4141
+ * not supported on the current platform or an [error](@ref error_handling)
4142
+ * occurred.
4042
4143
  *
4043
- * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4044
- * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4144
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4145
+ * GLFW_INVALID_ENUM.
4045
4146
  *
4046
4147
  * @thread_safety This function may be called from any thread.
4047
4148
  *
@@ -4178,11 +4279,11 @@ typedef struct GLFWallocator
4178
4279
  * @param[in] ypos The desired y-coordinate, relative to the top edge of the
4179
4280
  * content area.
4180
4281
  *
4181
- * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4182
- * GLFW_PLATFORM_ERROR.
4282
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4283
+ * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
4183
4284
  *
4184
4285
  * @remark @wayland This function will only work when the cursor mode is
4185
- * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing.
4286
+ * `GLFW_CURSOR_DISABLED`, otherwise it will emit @ref GLFW_FEATURE_UNAVAILABLE.
4186
4287
  *
4187
4288
  * @thread_safety This function must only be called from the main thread.
4188
4289
  *
@@ -4341,9 +4442,9 @@ typedef struct GLFWallocator
4341
4442
  * [character callback](@ref glfwSetCharCallback) instead.
4342
4443
  *
4343
4444
  * When a window loses input focus, it will generate synthetic key release
4344
- * events for all pressed keys. You can tell these events from user-generated
4345
- * events by the fact that the synthetic ones are generated after the focus
4346
- * loss event has been processed, i.e. after the
4445
+ * events for all pressed keys with associated key tokens. You can tell these
4446
+ * events from user-generated events by the fact that the synthetic ones are
4447
+ * generated after the focus loss event has been processed, i.e. after the
4347
4448
  * [window focus callback](@ref glfwSetWindowFocusCallback) has been called.
4348
4449
  *
4349
4450
  * The scancode of a key is specific to that platform or sometimes even to that
@@ -4617,8 +4718,6 @@ typedef struct GLFWallocator
4617
4718
  *
4618
4719
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4619
4720
  *
4620
- * @remark @wayland File drop is currently unimplemented.
4621
- *
4622
4721
  * @thread_safety This function must only be called from the main thread.
4623
4722
  *
4624
4723
  * @sa @ref path_drop
@@ -5071,6 +5170,11 @@ typedef struct GLFWallocator
5071
5170
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5072
5171
  * GLFW_PLATFORM_ERROR.
5073
5172
  *
5173
+ * @remark @win32 The clipboard on Windows has a single global lock for reading and
5174
+ * writing. GLFW tries to acquire it a few times, which is almost always enough. If it
5175
+ * cannot acquire the lock then this function emits @ref GLFW_PLATFORM_ERROR and returns.
5176
+ * It is safe to try this multiple times.
5177
+ *
5074
5178
  * @pointer_lifetime The specified string is copied before this function
5075
5179
  * returns.
5076
5180
  *
@@ -5098,6 +5202,11 @@ typedef struct GLFWallocator
5098
5202
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5099
5203
  * GLFW_FORMAT_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
5100
5204
  *
5205
+ * @remark @win32 The clipboard on Windows has a single global lock for reading and
5206
+ * writing. GLFW tries to acquire it a few times, which is almost always enough. If it
5207
+ * cannot acquire the lock then this function emits @ref GLFW_PLATFORM_ERROR and returns.
5208
+ * It is safe to try this multiple times.
5209
+ *
5101
5210
  * @pointer_lifetime The returned string is allocated and freed by GLFW. You
5102
5211
  * should not free it yourself. It is valid until the next call to @ref
5103
5212
  * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library
@@ -5215,12 +5324,15 @@ typedef struct GLFWallocator
5215
5324
  * thread.
5216
5325
  *
5217
5326
  * This function makes the OpenGL or OpenGL ES context of the specified window
5218
- * current on the calling thread. A context must only be made current on
5219
- * a single thread at a time and each thread can have only a single current
5220
- * context at a time.
5327
+ * current on the calling thread. It can also detach the current context from
5328
+ * the calling thread without making a new one current by passing in `NULL`.
5329
+ *
5330
+ * A context must only be made current on a single thread at a time and each
5331
+ * thread can have only a single current context at a time. Making a context
5332
+ * current detaches any previously current context on the calling thread.
5221
5333
  *
5222
- * When moving a context between threads, you must make it non-current on the
5223
- * old thread before making it current on the new one.
5334
+ * When moving a context between threads, you must detach it (make it
5335
+ * non-current) on the old thread before making it current on the new one.
5224
5336
  *
5225
5337
  * By default, making a context non-current implicitly forces a pipeline flush.
5226
5338
  * On machines that support `GL_KHR_context_flush_control`, you can control
@@ -5235,6 +5347,10 @@ typedef struct GLFWallocator
5235
5347
  * @param[in] window The window whose context to make current, or `NULL` to
5236
5348
  * detach the current context.
5237
5349
  *
5350
+ * @remarks If the previously current context was created via a different
5351
+ * context creation API than the one passed to this function, GLFW will still
5352
+ * detach the previous one from its API before making the new one current.
5353
+ *
5238
5354
  * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5239
5355
  * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
5240
5356
  *