pyglet 1.5.27__zip → 1.5.29__zip
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.
- pyglet-1.5.29/.github/workflows/unittests.yml +80 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/LICENSE +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/PKG-INFO +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/RELEASE_NOTES +37 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/__init__.py +30 -63
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/__init__.py +9 -41
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/base.py +1 -2
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/cocoa.py +115 -68
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/win32.py +22 -12
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/xlib.py +2 -2
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/base.py +9 -3
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/cocoa.py +7 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/headless.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/win32.py +10 -44
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/xlib.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/xlib_vidmoderestore.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/clock.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/event.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/extlibs/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/extlibs/png.py +4 -4
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/base.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/directwrite.py +598 -191
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/fontconfig.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/freetype.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/freetype_lib.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/quartz.py +45 -19
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/ttf.py +6 -41
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/win32.py +34 -25
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/win32query.py +29 -31
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/agl.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/base.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/cocoa.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/gl.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/gl_info.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glext_arb.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glext_nv.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glu.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glu_info.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glx.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glx_info.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glxext_arb.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glxext_mesa.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glxext_nv.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/headless.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib_agl.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib_glx.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib_wgl.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wgl.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wgl_info.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wglext_arb.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wglext_nv.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/win32.py +30 -30
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/xlib.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/allocation.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/vertexattribute.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/vertexbuffer.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/vertexdomain.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/frame.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/ninepatch.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/widgets.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/animation.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/atlas.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/bmp.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/dds.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/gdiplus.py +2 -2
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/gdkpixbuf2.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/gif.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/pil.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/png.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/quartz.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/s3tc.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/wic.py +8 -15
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/info.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/base.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/darwin_hid.py +2 -2
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/directinput.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/evdev.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/evdev_constants.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/wintab.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/x11_xinput.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/x11_xinput_tablet.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/lib.py +11 -5
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/__init__.py +3 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/cocoalibs.py +32 -3
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/runtime.py +212 -52
- pyglet-1.5.29/pyglet/libs/darwin/coreaudio.py +172 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/quartzkey.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/__init__.py +81 -57
- {pyglet-1.5.27/pyglet → pyglet-1.5.29/pyglet/libs/win32}/com.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/constants.py +8 -1
- pyglet-1.5.29/pyglet/libs/win32/context_managers.py +57 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/dinput.py +5 -5
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/libwintab.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/types.py +24 -16
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/winkey.py +9 -9
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/cursorfont.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xf86vmode.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xinerama.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xinput.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xlib.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xsync.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/math.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/buffered_logger.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/__init__.py +22 -36
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/base.py +1 -1
- pyglet-1.5.29/pyglet/media/codecs/coreaudio.py +185 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg.py +3 -5
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/compat.py +26 -8
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +16 -3
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +11 -5
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +6 -3
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +3 -3
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/gstreamer.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/wave.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/wmf.py +3 -3
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/devices/base.py +27 -22
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/devices/win32.py +84 -39
- pyglet-1.5.29/pyglet/media/drivers/__init__.py +89 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/base.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/adaptation.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/exceptions.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/interface.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/lib_dsound.py +17 -17
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/listener.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/adaptation.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/interface.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/lib_alc.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/lib_openal.py +5 -5
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/adaptation.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/interface.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/lib_pulseaudio.py +8 -10
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/silent/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/silent/adaptation.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/adaptation.py +3 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/interface.py +13 -10
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +3 -7
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/events.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/exceptions.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/instrumentation.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/mediathreads.py +6 -2
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/player.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/synthesis.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/codecs/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/codecs/gltf.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/codecs/obj.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/resource.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/shapes.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/sprite.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/caret.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/document.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/attributed.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/html.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/plaintext.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/structured.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/layout.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/runlist.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/util.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/__init__.py +180 -182
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_delegate.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_textview.py +12 -3
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_view.py +56 -65
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_window.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/systemcursor.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/event.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/headless/__init__.py +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/key.py +5 -2
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/mouse.py +13 -7
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/win32/__init__.py +33 -11
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/xlib/__init__.py +12 -19
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/PKG-INFO +1 -1
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/SOURCES.txt +6 -27
- pyglet-1.5.29/tests/integration/platform/test_win_context_managers.py +122 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_events.py +31 -21
- pyglet-1.5.27/pyglet/media/drivers/__init__.py +0 -114
- pyglet-1.5.27/pyproject.toml +0 -20
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/.coveragerc +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/.gitignore +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/.readthedocs.yml +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/.travis.yml +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/DESIGN +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/MANIFEST.in +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/NOTICE +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/README.md +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/asedemo.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/aseprite.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/running.ase +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/logo3d/logo3d.jpg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/logo3d/logo3d.obj.zip +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/logo3d/logo3d.wings +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/euclid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/obj_test.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/rabbit.mtl +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/rabbit.obj +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/tree_test.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/geometric.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/obj.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/obj_batch.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/euclid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/follow_mouse.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/primitives.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/thrust.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/Makefile +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/README.md +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/favicon.ico +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/logo.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/logo5.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/relatedlogo.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/conf.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/README.md +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/docstrings.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/layout.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/static/basic.css_t +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/static/pyglet.css_t +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/theme.conf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/external_resources.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/index.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/blacklist.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/contributing.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/dist.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/doc.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/generated.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/gl.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/media_logging_manual.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/media_manual.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/testing.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/virtualenv.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/wraptypes-class.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/wraptypes.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/make.bat +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/app.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/canvas.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/clock.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/event.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/font.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/gl.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/allocation.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/index.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/vertexattribute.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/vertexbuffer.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/vertexdomain.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/gui.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/image/animation.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/image/atlas.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/image/index.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/info.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/input.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/media.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/media_synthesis.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/pyglet.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/resource.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/shapes.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/sprite.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/caret.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/document.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/index.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/layout.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/window.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/window_key.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/window_mouse.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/advanced.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/context.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/debug.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/eventloop.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/events.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/examplegame.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/gl.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/graphics.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/image.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/abstract_image.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/abstract_image.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/buffer_image.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/buffer_image.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/context_flow.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/context_flow.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_default.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_no.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_text.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_default.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_hand.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_help.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_no.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_text.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_wait.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/explosion.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/font_metrics.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/font_metrics.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_classes.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_classes.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_grid.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_grid.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_sequence.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_sequence.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/mouse_coordinates.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/screens.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/screens.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/text_classes.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/text_classes.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_location.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_location.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_osx_default.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_osx_dialog.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_osx_tool.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_default.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_dialog.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_overlay.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_tool.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_transparent.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/input.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/installation.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/keyboard.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/media.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/mouse.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/options.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/quickstart.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/resources.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/shapes.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/text.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/time.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/windowing.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/doc/requirements.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/3dmodel/logo3d.mtl +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/3dmodel/logo3d.obj +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/3dmodel/model.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/assets/app.icns +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/assets/app.ico +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/assets/ship.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/astraea.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/asteroid1.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/asteroid2.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/asteroid3.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/bullet.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/bullet.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/explosion.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/explosion.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/pointer.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/ship.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/smoke.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/starfield.jpg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/setup.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/eglcontext.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/events/register_event_type.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/events/window_events.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/events/window_platform_event.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/file_dialog.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/fixed_resolution.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/asteroid.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/bullet.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/bullet.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/engine_flame.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/player.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/asteroid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/game/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/game/load.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/game/resources.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/asteroid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/load.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/physicalobject.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/resources.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/asteroid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/load.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/physicalobject.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/resources.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/util.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/asteroid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/asteroid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/bullet.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/load.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/physicalobject.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/resources.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/util.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/asteroid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/asteroid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/bullet.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/load.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/physicalobject.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/resources.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/util.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/graphics/image_convert.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/graphics/image_display.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/graphics/shapes.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/bar.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/button_down.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/button_hover.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/button_up.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/knob.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/widgets.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/hello_world.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/apple_remote.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/apple_remote_demo.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/input.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/joystick.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/show_input.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/tablet.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/media_info.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/media_player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/ball.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/ball.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/noisy.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/reader.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/bass.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/drums.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/guitar.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/piano.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/space.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/soundspace.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/synthesizer.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/video.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/opengl.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/opengl_context.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/opengl_scissor.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/pyglet.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/animation.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/dinosaur.gif +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/events.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/hello_world.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/image_viewer.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/kitten.jpg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/window_subclass.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/advanced_font.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/font_comparison.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/html_label.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/pyglet.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/text_input.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/timer.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/camera.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/camera_group.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/multiple_windows.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/overlay_window.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/transparent_window.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/genfield.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/py.df.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/py.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/renderfield.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/hello_world.svg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/svg_test.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/experimental/win32priority.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/make.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/egl.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/eglext.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/lib.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/pyogg.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/devices/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/dependency_links.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/top_level.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/zip-safe +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/pytest.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/setup.cfg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/setup.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/annotations.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/data.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/event_loop.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/future_test.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/interactive.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/performance.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/test_interactive_test_base.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/conftest.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man.ttf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man_bold.ttf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man_italic.ttf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/8bpp.gif +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/cursor.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/dinosaur.gif +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/gdk_close.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/grey_background.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon1.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size1.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size2.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size3.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size4.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size5.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/l.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/la.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/multitexture.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_16bpp.bmp +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_1bpp.bmp +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_24bpp.bmp +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_32bpp.bmp +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_4bpp.bmp +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_8bpp.bmp +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_8bpp.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_8bpp_trans.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_dxt1.dds +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_32bpp.bmp +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_dxt1.dds +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_dxt3.dds +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_dxt5.dds +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/alert.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/login.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/logout.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/receive.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/send.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_digitar_16_11025_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_digitar_16_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_digitar_8_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_fm_16_11025_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_fm_16_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_fm_8_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sawtooth_8_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_silence_8_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sine_8_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_square_8_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_triangle_8_44800_1ch.wav +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/models/logo3d.mtl +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/models/logo3d.obj +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/app/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/app/test_eventloop.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/font/test_fontconfig.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/font/test_freetype_face.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/graphics_common.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_allocation.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_immediate_drawing.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_immediate_drawing_indexed_data.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_multitexture.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_retained_drawing.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_retained_drawing_indexed_data.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/test_gdkpixbuf2.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/test_imagegrid.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/test_texture3d.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/mock_player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_directsound.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_driver.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_openal.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_pulse.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/model/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/model/test_loading.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/platform/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/platform/test_linux_fontconfig.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/platform/test_win_multicore_clock.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir1/f2.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir1/res.zip +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir2/f6.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/f1.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/rgbm.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/test_resource_image_loading.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/test_resource_loading.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/test_toplevel_imports.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/text/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/text/test_empty_document.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/test_context_share.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/test_event_sequence.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/test_window_caption.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/conftest.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/graphics/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/graphics/test_multitexture.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/image/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/image/test_image.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/media/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/media/test_player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/screenshots/committed/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/screenshots/session/README +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_content_valign.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_html.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_inline_elements.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_inline_elements_style_change.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_multiline_wrap.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_plain.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_style.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_events.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_fullscreen.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_modes.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_multisample.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_open.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_settings.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_styles.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/window_util.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/windowed_test_base.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/requirements.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_listener.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_player.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_sources.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_synthesis.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_atlas.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_clock.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_clock_fps.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_font.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_math.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_resource_path.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_text.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/text/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/text/test_layout.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/al_info.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/bokeh_timeline.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/compare.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/configure.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/extractors.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/fs.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/mp.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/mpexceptions.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/playmany.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/readme_run_tests.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/report.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/reports.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/retry_crashed.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/run_test_suite.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/summarize.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/test_instrumentation.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/timeline.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/gendist.sh +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/gengl.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/genwrappers.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/gl_info.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/inspect_font.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/license.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wgl.h +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/__init__.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/cparser.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/ctypesparser.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/lex.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/preprocessor.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/wrap.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/yacc.py +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/LICENSE.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/README.rst +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/assets/favicon.ico +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/assets/static/css/example-custom-styles.css +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/assets/static/images/pyglet.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/404.html/contents.lr +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/404.html/ngc-5793.jpg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/authors/benjamin/contents.lr +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/authors/benjamin/pyglet.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/authors/contents.lr +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/blog/contents.lr +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/blog/welcome-blog/contents.lr +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/contents.lr +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/content/eclipse.jpg +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/pyglet.lektorproject +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/AUTHORS.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/CHANGELOG.md +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/LICENSE.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/NOTICE.txt +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/README.md +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/blog-index.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/full-blog.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/full-page.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/gallery-404.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/404.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/author.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/authors.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/blog-post.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/blog.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/page.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/single-layout.ini +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/404.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/author.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/authors.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blog-post.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blog.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/layout.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/none.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/page.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/single-layout.html +0 -0
- {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/theme.ini +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: PyTest
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
linux:
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
strategy:
|
|
9
|
+
matrix:
|
|
10
|
+
python-version: [ '3.8', '3.9', '3.10' ]
|
|
11
|
+
name: Python ${{ matrix.python-version }} ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v3
|
|
14
|
+
- name: Setup python
|
|
15
|
+
uses: actions/setup-python@v4
|
|
16
|
+
with:
|
|
17
|
+
python-version: ${{ matrix.python-version }}
|
|
18
|
+
- name: Install dependencies
|
|
19
|
+
run: |
|
|
20
|
+
python -m pip install --upgrade pip
|
|
21
|
+
pip install pytest
|
|
22
|
+
sudo apt-get install xvfb libglu1-mesa
|
|
23
|
+
- name: Run tests
|
|
24
|
+
run: |
|
|
25
|
+
xvfb-run pytest tests/unit
|
|
26
|
+
|
|
27
|
+
osx:
|
|
28
|
+
runs-on: macos-latest
|
|
29
|
+
strategy:
|
|
30
|
+
matrix:
|
|
31
|
+
python-version: [ '3.8', '3.9', '3.10' ]
|
|
32
|
+
name: Python ${{ matrix.python-version }} OSX
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v3
|
|
35
|
+
- name: Setup python
|
|
36
|
+
uses: actions/setup-python@v4
|
|
37
|
+
with:
|
|
38
|
+
python-version: ${{ matrix.python-version }}
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: |
|
|
41
|
+
pip install pytest
|
|
42
|
+
- name: Run tests
|
|
43
|
+
run: |
|
|
44
|
+
pytest tests/unit
|
|
45
|
+
|
|
46
|
+
windows:
|
|
47
|
+
runs-on: windows-latest
|
|
48
|
+
strategy:
|
|
49
|
+
matrix:
|
|
50
|
+
python-version: [ '3.8', '3.9', '3.10' ]
|
|
51
|
+
name: Python ${{ matrix.python-version }} Windows
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v3
|
|
54
|
+
- name: Setup python
|
|
55
|
+
uses: actions/setup-python@v4
|
|
56
|
+
with:
|
|
57
|
+
python-version: ${{ matrix.python-version }}
|
|
58
|
+
- uses: msys2/setup-msys2@v2
|
|
59
|
+
with:
|
|
60
|
+
msystem: MINGW64
|
|
61
|
+
release: false
|
|
62
|
+
install: mingw-w64-x86_64-mesa
|
|
63
|
+
- name: Install dependencies
|
|
64
|
+
run: |
|
|
65
|
+
pip install pytest
|
|
66
|
+
- name: Run tests
|
|
67
|
+
shell: pwsh
|
|
68
|
+
run: |
|
|
69
|
+
|
|
70
|
+
$env:PYGLET_DEBUG_LIB = "True"
|
|
71
|
+
$env:PYGLET_DEBUG_GL_TRACE = "True"
|
|
72
|
+
|
|
73
|
+
mkdir D:\a\pyglet\pyglet\lib
|
|
74
|
+
copy C:\msys64\mingw64\bin\opengl32.dll D:\a\pyglet\pyglet\lib\
|
|
75
|
+
|
|
76
|
+
mkdir D:\a\pyglet\lib
|
|
77
|
+
copy C:\msys64\mingw64\bin\opengl32.dll D:\a\pyglet\lib\
|
|
78
|
+
|
|
79
|
+
# pytest tests/unit
|
|
80
|
+
python -m pyglet.info
|
|
@@ -1,3 +1,40 @@
|
|
|
1
|
+
pyglet 1.5.29
|
|
2
|
+
|
|
3
|
+
Bugfixes
|
|
4
|
+
--------
|
|
5
|
+
- image: Fix name error on Windows when using WIC decoder (#1106)
|
|
6
|
+
- media: Backport thread join exception catch from 2.0 (9db3971) (#1105)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
pyglet 1.5.28
|
|
10
|
+
|
|
11
|
+
Features
|
|
12
|
+
--------
|
|
13
|
+
- Add support for FFmpeg 6.0
|
|
14
|
+
- Add support for mouse buttons 4 & 5 on Windows and Linux
|
|
15
|
+
- Windows: set higher timer precision when starting PlatformEventLoop.
|
|
16
|
+
- font.DirectWrite: improve font name parser (set 'dw_legacy_naming' pyglet option for old behavior)
|
|
17
|
+
- Extend keyboard F-key support (F16-24 on Windows, F21-24 on Linux. Mac limited to F20. (#773)
|
|
18
|
+
- Avoid audio stutter by initializing the AudioDriver when the media module is first used.
|
|
19
|
+
- macOS: add support for "on_file_drop" Window events
|
|
20
|
+
- macOS: add CoreAudio decoder for supporting compressed audio formats out of the box (mp3, etc.)
|
|
21
|
+
- macOS: add filename support for QuartzFont
|
|
22
|
+
- macOS: New optional alternate event loop, to prevent M1 issues (set 'osx_alt_loop' pyglet option) (#794)
|
|
23
|
+
|
|
24
|
+
Bugfixes
|
|
25
|
+
--------
|
|
26
|
+
- Backport of numerous media and font bugfixes from the master branch.
|
|
27
|
+
- Fix BYTE windows type for Python 3.12
|
|
28
|
+
- Skip calling CGDisplaySetDisplayMode if the current screen mode is the same (#891)
|
|
29
|
+
- font.DirectWrite: Enable color font only for supported OS's
|
|
30
|
+
- Fix get_default_screen() to get the primary monitor, not just the first in the list (#717)
|
|
31
|
+
- Fix debug_win32 - LoadLibrary implementation (#748)
|
|
32
|
+
- font.Directwrite: Fix 32 bit crashes (#771)
|
|
33
|
+
- macOS: Fix memory leak with NSDate object returns.
|
|
34
|
+
- Fix FFmpeg 4.0 not being found on MacOS
|
|
35
|
+
- Varios XAudio2 fixes and cleanups (#877)
|
|
36
|
+
|
|
37
|
+
|
|
1
38
|
pyglet 1.5.27
|
|
2
39
|
|
|
3
40
|
Bugfixes
|
|
@@ -1,41 +1,6 @@
|
|
|
1
|
-
# ----------------------------------------------------------------------------
|
|
2
|
-
# pyglet
|
|
3
|
-
# Copyright (c) 2006-2008 Alex Holkner
|
|
4
|
-
# Copyright (c) 2008-2022 pyglet contributors
|
|
5
|
-
# All rights reserved.
|
|
6
|
-
#
|
|
7
|
-
# Redistribution and use in source and binary forms, with or without
|
|
8
|
-
# modification, are permitted provided that the following conditions
|
|
9
|
-
# are met:
|
|
10
|
-
#
|
|
11
|
-
# * Redistributions of source code must retain the above copyright
|
|
12
|
-
# notice, this list of conditions and the following disclaimer.
|
|
13
|
-
# * Redistributions in binary form must reproduce the above copyright
|
|
14
|
-
# notice, this list of conditions and the following disclaimer in
|
|
15
|
-
# the documentation and/or other materials provided with the
|
|
16
|
-
# distribution.
|
|
17
|
-
# * Neither the name of pyglet nor the names of its
|
|
18
|
-
# contributors may be used to endorse or promote products
|
|
19
|
-
# derived from this software without specific prior written
|
|
20
|
-
# permission.
|
|
21
|
-
#
|
|
22
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
-
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
-
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
-
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
-
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
-
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
-
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
-
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
-
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
-
# ----------------------------------------------------------------------------
|
|
35
|
-
|
|
36
1
|
"""pyglet is a cross-platform games and multimedia package.
|
|
37
2
|
|
|
38
|
-
|
|
3
|
+
More information is available at http://www.pyglet.org
|
|
39
4
|
"""
|
|
40
5
|
|
|
41
6
|
import os
|
|
@@ -53,7 +18,7 @@ _is_pyglet_doc_run = hasattr(sys, "is_pyglet_doc_run") and sys.is_pyglet_doc_run
|
|
|
53
18
|
#:
|
|
54
19
|
#: Valid only if pyglet was installed from a source or binary distribution
|
|
55
20
|
#: (i.e. not cloned from Git).
|
|
56
|
-
version = '1.5.
|
|
21
|
+
version = '1.5.29'
|
|
57
22
|
|
|
58
23
|
|
|
59
24
|
if sys.version_info < (3, 6):
|
|
@@ -160,12 +125,14 @@ options = {
|
|
|
160
125
|
'vsync': None,
|
|
161
126
|
'xsync': True,
|
|
162
127
|
'xlib_fullscreen_override_redirect': False,
|
|
163
|
-
'darwin_cocoa': True,
|
|
164
128
|
'search_local_libs': True,
|
|
165
129
|
'advanced_font_features': False,
|
|
166
130
|
'headless': False,
|
|
167
131
|
'headless_device': 0,
|
|
168
132
|
'win32_disable_shaping': False,
|
|
133
|
+
'dw_legacy_naming': False,
|
|
134
|
+
'com_mta': False,
|
|
135
|
+
'osx_alt_loop': False
|
|
169
136
|
}
|
|
170
137
|
|
|
171
138
|
_option_types = {
|
|
@@ -189,30 +156,32 @@ _option_types = {
|
|
|
189
156
|
'vsync': bool,
|
|
190
157
|
'xsync': bool,
|
|
191
158
|
'xlib_fullscreen_override_redirect': bool,
|
|
159
|
+
'search_local_libs': bool,
|
|
192
160
|
'advanced_font_features': bool,
|
|
193
161
|
'headless': bool,
|
|
194
162
|
'headless_device': int,
|
|
195
|
-
'win32_disable_shaping': bool
|
|
163
|
+
'win32_disable_shaping': bool,
|
|
164
|
+
'dw_legacy_naming': bool,
|
|
165
|
+
'com_mta': bool,
|
|
166
|
+
'osx_alt_loop': bool,
|
|
196
167
|
}
|
|
197
168
|
|
|
198
169
|
|
|
199
|
-
|
|
170
|
+
for key in options:
|
|
200
171
|
"""Read defaults for options from environment"""
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
172
|
+
assert key in _option_types, f"Option '{key}' must have a type set in _option_types."
|
|
173
|
+
env = f'PYGLET_{key.upper()}'
|
|
174
|
+
try:
|
|
175
|
+
value = os.environ[env]
|
|
176
|
+
if _option_types[key] is tuple:
|
|
177
|
+
options[key] = value.split(',')
|
|
178
|
+
elif _option_types[key] is bool:
|
|
179
|
+
options[key] = value in ('true', 'TRUE', 'True', '1')
|
|
180
|
+
elif _option_types[key] is int:
|
|
181
|
+
options[key] = int(value)
|
|
182
|
+
except KeyError:
|
|
183
|
+
pass
|
|
214
184
|
|
|
215
|
-
_read_environment()
|
|
216
185
|
|
|
217
186
|
if compat_platform == 'cygwin':
|
|
218
187
|
# This hack pretends that the posix-like ctypes provides windows
|
|
@@ -268,21 +237,21 @@ def _trace_frame(thread, frame, indent):
|
|
|
268
237
|
filename = os.path.join('...', filename)
|
|
269
238
|
_trace_filename_abbreviations[path] = filename
|
|
270
239
|
|
|
271
|
-
location = '(
|
|
240
|
+
location = f'({filename}:{line})'
|
|
272
241
|
|
|
273
242
|
if indent:
|
|
274
|
-
name = 'Called from
|
|
275
|
-
print('[
|
|
243
|
+
name = f'Called from {name}'
|
|
244
|
+
print(f'[{thread}] {indent}{name} {location}')
|
|
276
245
|
|
|
277
246
|
if _trace_args:
|
|
278
247
|
if is_ctypes:
|
|
279
248
|
args = [_trace_repr(arg) for arg in frame.f_locals['args']]
|
|
280
|
-
print('
|
|
249
|
+
print(f' {indent}args=({", ".join(args)})')
|
|
281
250
|
else:
|
|
282
251
|
for argname in code.co_varnames[:code.co_argcount]:
|
|
283
252
|
try:
|
|
284
253
|
argvalue = _trace_repr(frame.f_locals[argname])
|
|
285
|
-
print('
|
|
254
|
+
print(f' {indent}{argname}={argvalue}')
|
|
286
255
|
except:
|
|
287
256
|
pass
|
|
288
257
|
|
|
@@ -338,7 +307,7 @@ class _ModuleProxy:
|
|
|
338
307
|
if self._module is not None:
|
|
339
308
|
raise
|
|
340
309
|
|
|
341
|
-
import_name = 'pyglet
|
|
310
|
+
import_name = f'pyglet.{self._module_name}'
|
|
342
311
|
__import__(import_name)
|
|
343
312
|
module = sys.modules[import_name]
|
|
344
313
|
object.__setattr__(self, '_module', module)
|
|
@@ -352,7 +321,7 @@ class _ModuleProxy:
|
|
|
352
321
|
if self._module is not None:
|
|
353
322
|
raise
|
|
354
323
|
|
|
355
|
-
import_name = 'pyglet
|
|
324
|
+
import_name = f'pyglet.{self._module_name}'
|
|
356
325
|
__import__(import_name)
|
|
357
326
|
module = sys.modules[import_name]
|
|
358
327
|
object.__setattr__(self, '_module', module)
|
|
@@ -366,7 +335,6 @@ if TYPE_CHECKING:
|
|
|
366
335
|
from . import app
|
|
367
336
|
from . import canvas
|
|
368
337
|
from . import clock
|
|
369
|
-
from . import com
|
|
370
338
|
from . import event
|
|
371
339
|
from . import font
|
|
372
340
|
from . import gl
|
|
@@ -387,7 +355,6 @@ else:
|
|
|
387
355
|
app = _ModuleProxy('app')
|
|
388
356
|
canvas = _ModuleProxy('canvas')
|
|
389
357
|
clock = _ModuleProxy('clock')
|
|
390
|
-
com = _ModuleProxy('com')
|
|
391
358
|
event = _ModuleProxy('event')
|
|
392
359
|
font = _ModuleProxy('font')
|
|
393
360
|
gl = _ModuleProxy('gl')
|
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
# ----------------------------------------------------------------------------
|
|
2
|
-
# pyglet
|
|
3
|
-
# Copyright (c) 2006-2008 Alex Holkner
|
|
4
|
-
# Copyright (c) 2008-2022 pyglet contributors
|
|
5
|
-
# All rights reserved.
|
|
6
|
-
#
|
|
7
|
-
# Redistribution and use in source and binary forms, with or without
|
|
8
|
-
# modification, are permitted provided that the following conditions
|
|
9
|
-
# are met:
|
|
10
|
-
#
|
|
11
|
-
# * Redistributions of source code must retain the above copyright
|
|
12
|
-
# notice, this list of conditions and the following disclaimer.
|
|
13
|
-
# * Redistributions in binary form must reproduce the above copyright
|
|
14
|
-
# notice, this list of conditions and the following disclaimer in
|
|
15
|
-
# the documentation and/or other materials provided with the
|
|
16
|
-
# distribution.
|
|
17
|
-
# * Neither the name of pyglet nor the names of its
|
|
18
|
-
# contributors may be used to endorse or promote products
|
|
19
|
-
# derived from this software without specific prior written
|
|
20
|
-
# permission.
|
|
21
|
-
#
|
|
22
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
-
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
-
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
-
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
-
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
-
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
-
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
-
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
-
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
-
# ----------------------------------------------------------------------------
|
|
35
|
-
|
|
36
1
|
"""Application-wide functionality.
|
|
37
2
|
|
|
38
3
|
Applications
|
|
@@ -64,20 +29,24 @@ default policy is to wait until all windows are closed)::
|
|
|
64
29
|
.. versionadded:: 1.1
|
|
65
30
|
"""
|
|
66
31
|
|
|
32
|
+
import platform
|
|
67
33
|
import sys
|
|
68
34
|
import weakref
|
|
69
35
|
|
|
70
|
-
|
|
36
|
+
import pyglet
|
|
71
37
|
from pyglet import compat_platform
|
|
38
|
+
from pyglet.app.base import EventLoop
|
|
72
39
|
|
|
73
40
|
_is_pyglet_doc_run = hasattr(sys, "is_pyglet_doc_run") and sys.is_pyglet_doc_run
|
|
74
41
|
|
|
75
|
-
|
|
76
42
|
if _is_pyglet_doc_run:
|
|
77
43
|
from pyglet.app.base import PlatformEventLoop
|
|
78
44
|
else:
|
|
79
45
|
if compat_platform == 'darwin':
|
|
80
|
-
from pyglet.app.cocoa import
|
|
46
|
+
from pyglet.app.cocoa import CocoaPlatformEventLoop as PlatformEventLoop
|
|
47
|
+
|
|
48
|
+
if platform.machine() == 'arm64' or pyglet.options["osx_alt_loop"]:
|
|
49
|
+
from pyglet.app.cocoa import CocoaAlternateEventLoop as EventLoop
|
|
81
50
|
elif compat_platform in ('win32', 'cygwin'):
|
|
82
51
|
from pyglet.app.win32 import Win32EventLoop as PlatformEventLoop
|
|
83
52
|
else:
|
|
@@ -127,7 +96,6 @@ def exit():
|
|
|
127
96
|
#: :meth:`EventLoop.run`.
|
|
128
97
|
event_loop = EventLoop()
|
|
129
98
|
|
|
130
|
-
#: The platform-dependent event loop.
|
|
131
|
-
|
|
132
|
-
#: object.
|
|
99
|
+
#: The platform-dependent event loop. Applications must not subclass
|
|
100
|
+
# or replace this :class:`PlatformEventLoop` object.
|
|
133
101
|
platform_event_loop = PlatformEventLoop()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ----------------------------------------------------------------------------
|
|
2
2
|
# pyglet
|
|
3
3
|
# Copyright (c) 2006-2008 Alex Holkner
|
|
4
|
-
# Copyright (c) 2008-
|
|
4
|
+
# Copyright (c) 2008-2023 pyglet contributors
|
|
5
5
|
# All rights reserved.
|
|
6
6
|
#
|
|
7
7
|
# Redistribution and use in source and binary forms, with or without
|
|
@@ -55,7 +55,6 @@ class PlatformEventLoop:
|
|
|
55
55
|
def __init__(self):
|
|
56
56
|
self._event_queue = queue.Queue()
|
|
57
57
|
self._is_running = threading.Event()
|
|
58
|
-
self._is_running.clear()
|
|
59
58
|
|
|
60
59
|
def is_running(self):
|
|
61
60
|
"""Return True if the event loop is currently processing, or False
|
|
@@ -1,59 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
#
|
|
7
|
-
# Redistribution and use in source and binary forms, with or without
|
|
8
|
-
# modification, are permitted provided that the following conditions
|
|
9
|
-
# are met:
|
|
10
|
-
#
|
|
11
|
-
# * Redistributions of source code must retain the above copyright
|
|
12
|
-
# notice, this list of conditions and the following disclaimer.
|
|
13
|
-
# * Redistributions in binary form must reproduce the above copyright
|
|
14
|
-
# notice, this list of conditions and the following disclaimer in
|
|
15
|
-
# the documentation and/or other materials provided with the
|
|
16
|
-
# distribution.
|
|
17
|
-
# * Neither the name of pyglet nor the names of its
|
|
18
|
-
# contributors may be used to endorse or promote products
|
|
19
|
-
# derived from this software without specific prior written
|
|
20
|
-
# permission.
|
|
21
|
-
#
|
|
22
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
-
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
-
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
-
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
-
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
-
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
-
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
-
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
-
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
-
# ----------------------------------------------------------------------------
|
|
35
|
-
|
|
36
|
-
from pyglet.app.base import PlatformEventLoop
|
|
37
|
-
from pyglet.libs.darwin import cocoapy
|
|
1
|
+
import signal
|
|
2
|
+
from pyglet import app
|
|
3
|
+
from pyglet.app.base import PlatformEventLoop, EventLoop
|
|
4
|
+
from pyglet.libs.darwin import cocoapy, AutoReleasePool, ObjCSubclass, PyObjectEncoding, ObjCInstance, send_super, \
|
|
5
|
+
ObjCClass, get_selector
|
|
38
6
|
|
|
39
7
|
NSApplication = cocoapy.ObjCClass('NSApplication')
|
|
40
8
|
NSMenu = cocoapy.ObjCClass('NSMenu')
|
|
41
9
|
NSMenuItem = cocoapy.ObjCClass('NSMenuItem')
|
|
42
|
-
NSAutoreleasePool = cocoapy.ObjCClass('NSAutoreleasePool')
|
|
43
10
|
NSDate = cocoapy.ObjCClass('NSDate')
|
|
44
11
|
NSEvent = cocoapy.ObjCClass('NSEvent')
|
|
45
12
|
NSUserDefaults = cocoapy.ObjCClass('NSUserDefaults')
|
|
13
|
+
NSTimer = cocoapy.ObjCClass('NSTimer')
|
|
46
14
|
|
|
47
15
|
|
|
48
|
-
class AutoReleasePool:
|
|
49
|
-
def __enter__(self):
|
|
50
|
-
self.pool = NSAutoreleasePool.alloc().init()
|
|
51
|
-
return self.pool
|
|
52
|
-
|
|
53
|
-
def __exit__(self, exc_type, exc_value, traceback):
|
|
54
|
-
self.pool.drain()
|
|
55
|
-
del self.pool
|
|
56
|
-
|
|
57
16
|
|
|
58
17
|
def add_menu_item(menu, title, action, key):
|
|
59
18
|
with AutoReleasePool():
|
|
@@ -65,8 +24,6 @@ def add_menu_item(menu, title, action, key):
|
|
|
65
24
|
menu.addItem_(menuItem)
|
|
66
25
|
|
|
67
26
|
# cleanup
|
|
68
|
-
title.release()
|
|
69
|
-
key.release()
|
|
70
27
|
menuItem.release()
|
|
71
28
|
|
|
72
29
|
|
|
@@ -92,10 +49,72 @@ def create_menu():
|
|
|
92
49
|
appMenuItem.release()
|
|
93
50
|
|
|
94
51
|
|
|
95
|
-
class
|
|
52
|
+
class _AppDelegate_Implementation:
|
|
53
|
+
_AppDelegate = ObjCSubclass('NSObject', '_AppDelegate')
|
|
54
|
+
|
|
55
|
+
@_AppDelegate.method(b'@' + PyObjectEncoding)
|
|
56
|
+
def init(self, pyglet_loop):
|
|
57
|
+
objc = ObjCInstance(send_super(self, 'init'))
|
|
58
|
+
self._pyglet_loop = pyglet_loop
|
|
59
|
+
return objc # objc is self
|
|
60
|
+
|
|
61
|
+
@_AppDelegate.method('v')
|
|
62
|
+
def updatePyglet_(self):
|
|
63
|
+
self._pyglet_loop.nsapp_step()
|
|
64
|
+
|
|
65
|
+
@_AppDelegate.method('v@')
|
|
66
|
+
def applicationWillTerminate_(self, notification):
|
|
67
|
+
self._pyglet_loop.is_running = False
|
|
68
|
+
self._pyglet_loop.has_exit = True
|
|
69
|
+
|
|
70
|
+
@_AppDelegate.method('v@')
|
|
71
|
+
def applicationDidFinishLaunching_(self, notification):
|
|
72
|
+
self._pyglet_loop._finished_launching = True
|
|
73
|
+
|
|
74
|
+
_AppDelegate = ObjCClass('_AppDelegate') # the actual class
|
|
75
|
+
|
|
76
|
+
class CocoaAlternateEventLoop(EventLoop):
|
|
77
|
+
"""This is an alternate loop developed mainly for ARM64 variants of macOS.
|
|
78
|
+
nextEventMatchingMask_untilDate_inMode_dequeue_ is very broken with ctypes calls. Events eventually stop
|
|
79
|
+
working properly after X returns. This event loop differs in that it uses the built-in NSApplication event
|
|
80
|
+
loop. We tie our schedule into it via timer.
|
|
81
|
+
"""
|
|
82
|
+
def run(self, interval=1.0/60.0):
|
|
83
|
+
self.has_exit = False
|
|
84
|
+
|
|
85
|
+
from pyglet.window import Window
|
|
86
|
+
Window._enable_event_queue = False
|
|
87
|
+
|
|
88
|
+
# Dispatch pending events
|
|
89
|
+
for window in app.windows:
|
|
90
|
+
window.switch_to()
|
|
91
|
+
window.dispatch_pending_events()
|
|
92
|
+
|
|
93
|
+
self.platform_event_loop = app.platform_event_loop
|
|
94
|
+
|
|
95
|
+
self.dispatch_event('on_enter')
|
|
96
|
+
self.is_running = True
|
|
97
|
+
self.platform_event_loop.nsapp_start(interval)
|
|
98
|
+
|
|
99
|
+
def exit(self):
|
|
100
|
+
"""Safely exit the event loop at the end of the current iteration.
|
|
101
|
+
|
|
102
|
+
This method is a thread-safe equivalent for setting
|
|
103
|
+
:py:attr:`has_exit` to ``True``. All waiting threads will be
|
|
104
|
+
interrupted (see :py:meth:`sleep`).
|
|
105
|
+
"""
|
|
106
|
+
self.has_exit = True
|
|
107
|
+
self.platform_event_loop.notify()
|
|
108
|
+
|
|
109
|
+
self.is_running = False
|
|
110
|
+
self.dispatch_event('on_exit')
|
|
111
|
+
|
|
112
|
+
self.platform_event_loop.nsapp_stop()
|
|
113
|
+
|
|
114
|
+
class CocoaPlatformEventLoop(PlatformEventLoop):
|
|
96
115
|
|
|
97
116
|
def __init__(self):
|
|
98
|
-
super(
|
|
117
|
+
super(CocoaPlatformEventLoop, self).__init__()
|
|
99
118
|
with AutoReleasePool():
|
|
100
119
|
# Prepare the default application.
|
|
101
120
|
self.NSApp = NSApplication.sharedApplication()
|
|
@@ -112,6 +131,11 @@ class CocoaEventLoop(PlatformEventLoop):
|
|
|
112
131
|
ignoreState = cocoapy.CFSTR("ApplePersistenceIgnoreState")
|
|
113
132
|
if not defaults.objectForKey_(ignoreState):
|
|
114
133
|
defaults.setBool_forKey_(True, ignoreState)
|
|
134
|
+
|
|
135
|
+
holdEnabled = cocoapy.CFSTR("ApplePressAndHoldEnabled")
|
|
136
|
+
if not defaults.objectForKey_(holdEnabled):
|
|
137
|
+
defaults.setBool_forKey_(False, holdEnabled)
|
|
138
|
+
|
|
115
139
|
self._finished_launching = False
|
|
116
140
|
|
|
117
141
|
def start(self):
|
|
@@ -123,6 +147,44 @@ class CocoaEventLoop(PlatformEventLoop):
|
|
|
123
147
|
self.NSApp.activateIgnoringOtherApps_(True)
|
|
124
148
|
self._finished_launching = True
|
|
125
149
|
|
|
150
|
+
def nsapp_start(self, interval):
|
|
151
|
+
"""Used only for CocoaAlternateEventLoop"""
|
|
152
|
+
from pyglet.app import event_loop
|
|
153
|
+
self._event_loop = event_loop
|
|
154
|
+
|
|
155
|
+
def term_received(*args):
|
|
156
|
+
if self.timer:
|
|
157
|
+
self.timer.invalidate()
|
|
158
|
+
self.timer = None
|
|
159
|
+
|
|
160
|
+
self.nsapp_stop()
|
|
161
|
+
|
|
162
|
+
# Force NSApp to close if Python receives sig events.
|
|
163
|
+
signal.signal(signal.SIGINT, term_received)
|
|
164
|
+
signal.signal(signal.SIGTERM, term_received)
|
|
165
|
+
|
|
166
|
+
self.appdelegate = _AppDelegate.alloc().init(self)
|
|
167
|
+
self.NSApp.setDelegate_(self.appdelegate)
|
|
168
|
+
|
|
169
|
+
self.timer = NSTimer.scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(
|
|
170
|
+
interval, # Clamped internally to 0.0001 (including 0)
|
|
171
|
+
self.appdelegate,
|
|
172
|
+
get_selector('updatePyglet:'),
|
|
173
|
+
False,
|
|
174
|
+
True
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
self.NSApp.run()
|
|
178
|
+
|
|
179
|
+
def nsapp_step(self):
|
|
180
|
+
"""Used only for CocoaAlternateEventLoop"""
|
|
181
|
+
self._event_loop.idle()
|
|
182
|
+
self.dispatch_posted_events()
|
|
183
|
+
|
|
184
|
+
def nsapp_stop(self):
|
|
185
|
+
"""Used only for CocoaAlternateEventLoop"""
|
|
186
|
+
self.NSApp.terminate_(None)
|
|
187
|
+
|
|
126
188
|
def step(self, timeout=None):
|
|
127
189
|
with AutoReleasePool():
|
|
128
190
|
self.dispatch_posted_events()
|
|
@@ -132,6 +194,8 @@ class CocoaEventLoop(PlatformEventLoop):
|
|
|
132
194
|
# Using distantFuture as untilDate means that nextEventMatchingMask
|
|
133
195
|
# will wait until the next event comes along.
|
|
134
196
|
timeout_date = NSDate.distantFuture()
|
|
197
|
+
elif timeout == 0.0:
|
|
198
|
+
timeout_date = NSDate.distantPast()
|
|
135
199
|
else:
|
|
136
200
|
timeout_date = NSDate.dateWithTimeIntervalSinceNow_(timeout)
|
|
137
201
|
|
|
@@ -146,25 +210,8 @@ class CocoaEventLoop(PlatformEventLoop):
|
|
|
146
210
|
if event is not None:
|
|
147
211
|
event_type = event.type()
|
|
148
212
|
if event_type != cocoapy.NSApplicationDefined:
|
|
149
|
-
# Send out event as normal. Responders will still receive
|
|
150
|
-
# keyUp:, keyDown:, and flagsChanged: events.
|
|
151
213
|
self.NSApp.sendEvent_(event)
|
|
152
214
|
|
|
153
|
-
# Resend key events as special pyglet-specific messages
|
|
154
|
-
# which supplant the keyDown:, keyUp:, and flagsChanged: messages
|
|
155
|
-
# because NSApplication translates multiple key presses into key
|
|
156
|
-
# equivalents before sending them on, which means that some keyUp:
|
|
157
|
-
# messages are never sent for individual keys. Our pyglet-specific
|
|
158
|
-
# replacements ensure that we see all the raw key presses & releases.
|
|
159
|
-
# We also filter out key-down repeats since pyglet only sends one
|
|
160
|
-
# on_key_press event per key press.
|
|
161
|
-
if event_type == cocoapy.NSKeyDown and not event.isARepeat():
|
|
162
|
-
self.NSApp.sendAction_to_from_(cocoapy.get_selector("pygletKeyDown:"), None, event)
|
|
163
|
-
elif event_type == cocoapy.NSKeyUp:
|
|
164
|
-
self.NSApp.sendAction_to_from_(cocoapy.get_selector("pygletKeyUp:"), None, event)
|
|
165
|
-
elif event_type == cocoapy.NSFlagsChanged:
|
|
166
|
-
self.NSApp.sendAction_to_from_(cocoapy.get_selector("pygletFlagsChanged:"), None, event)
|
|
167
|
-
|
|
168
215
|
self.NSApp.updateWindows()
|
|
169
216
|
did_time_out = False
|
|
170
217
|
else:
|