Получить дескриптор окна в PyGI на MacOS
Я использую PyGObject/PyGI и GStreamer, чтобы показать видео в моем графическом интерфейсе. Видео показывается в Gtk.DrawingArea, и поэтому мне нужно получить его дескриптор окна в обработчике реализации сигнала. На Linux я могу просто использовать drawing_area.get_property('window').get_xid()
и в Windows я должен получить доступ к C-API (как описано здесь):
drawingarea_window = drawingarea.get_property('window')
ctypes.pythonapi.PyCapsule_GetPointer.restype = ctypes.c_void_p
ctypes.pythonapi.PyCapsule_GetPointer.argtypes = [ctypes.py_object]
drawingarea_gpointer = ctypes.pythonapi.PyCapsule_GetPointer(drawingarea_window.__gpointer__, None)
gdkdll = ctypes.CDLL ('libgdk-3-0.dll')
self._drawingarea_handle = gdkdll.gdk_win32_window_get_handle(drawingarea_gpointer)
Теперь я хочу то же самое на MacOS. Поскольку он использует не X11, а Quartz, я снова попытался использовать C-API. Но на этот раз позвонить gdk_quartz_window_get_nswindow
вместо gdk_win32_window_get_handle
(см. gdkwindow-quartz.c):
// ... same lines as in Windows-example
gdkdll = ctypes.CDLL ('libgdk-3.0.dylib')
self._drawingarea_handle = gdkdll.gdk_quartz_window_get_nswindow(drawingarea_gpointer)
Но это приводит только к Segmentation fault: 11
,
Любые идеи о том, как получить ручку на MacOS?