GDK-Win32: Backport MR !5702 into gtk-3-24

Since we might be using GdkGLContext across different threads and may be using
GdkGLContext with different libraries or programs that make the WGL context
current outside of GTK/GDK, make things safer for such applications or
libraries, such as GstGL.

This will make some wgl*() calls in ->make_current() and ->dispose() link
directly to the system's/ICD opengl32.dll instead of going through the function
pointers that are acquired via libepoxy, which can be rendered invalid when the
WGL context is made current outside of GdkGLContext, leading to weird crashes.
By linking directly to opengl32.dll, we are assured that these wgl*() calls
will be carried out correctly.

Note that this is not done when initializing or realizing the WGL context as
we are in the same thread as these are all carried out within GTK/GDK, as it
should not be necessary to do so there.
4 files changed
tree: f16ebcca3683d63aae01d9679a65208e975aa4c6
  1. .gitlab-ci/
  2. build-aux/
  3. demos/
  4. docs/
  5. examples/
  6. gdk/
  7. gtk/
  8. libgail-util/
  9. m4macros/
  10. modules/
  11. po/
  12. po-properties/
  13. subprojects/
  14. tests/
  15. testsuite/
  16. .gitlab-ci.yml
  17. CONTRIBUTING.md
  18. COPYING
  19. gail-3.0.pc.in
  20. gdk-3.0.pc.in
  21. gtk+-3.0.pc.in
  22. gtk+-unix-print-3.0.pc.in
  23. gtk+.doap
  24. gtk-zip.sh.in
  25. gtk.supp
  26. INSTALL.md
  27. make-pot
  28. meson.build
  29. meson_options.txt
  30. NEWS
  31. README.md
  32. README.win32.md
README.md

General Information

GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK is suitable for projects ranging from small one-off projects to complete application suites.

GTK is free software and part of the GNU Project. However, the licensing terms for GTK, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties.

The official download locations are:

The official web site is:

Installation

See the file INSTALL.md

How to report bugs

Bugs should be reported to the GTK issue tracker. You will need to create an account for yourself.

In the bug report please include:

  • Information about your system. For instance:

    • What operating system and version
    • For Linux, what version of the C library

    And anything else you think is relevant.

  • How to reproduce the bug.

    If you can reproduce it with one of the test programs that are built in the tests/ subdirectory, that will be most convenient. Otherwise, please include a short test program that exhibits the behavior. As a last resort, you can also provide a pointer to a larger piece of software that can be downloaded.

  • If the bug was a crash, the exact text that was printed out when the crash occurred.

  • Further information such as stack traces may be useful, but is not necessary.

Bug fixes and improvements

Changes should be submitted as merge request to the GTK project. If a merge request fixes an issue, the description should mention the issue number.

Release notes

Release notes for releases of GTK 3.x are part of the migration guide in the GTK documentation. See