cr_dmx.h revision e0e0c19eefceaf5d4ec40f9466b58a771f50e799
1e83c8de3aa48b316b28057d53995272baf1260cwrowe/**
1e83c8de3aa48b316b28057d53995272baf1260cwrowe * DMX utility functions.
1e83c8de3aa48b316b28057d53995272baf1260cwrowe */
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#ifndef CR_DMX_H
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#define CR_DMX_H
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#include <X11/Xlib.h>
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#include <X11/extensions/dmxext.h>
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#include "cr_spu.h"
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#include "state/cr_statetypes.h"
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowetypedef struct {
1e83c8de3aa48b316b28057d53995272baf1260cwrowe GLXDrawable xwin; /**< backend server's X window */
1e83c8de3aa48b316b28057d53995272baf1260cwrowe GLXDrawable xsubwin; /**< child of xwin, clipped to screen bounds */
1e83c8de3aa48b316b28057d53995272baf1260cwrowe Display *dpy; /**< DMX back-end server display */
1e83c8de3aa48b316b28057d53995272baf1260cwrowe CRrecti visrect; /**< visible rect, in front-end screen coords */
1e83c8de3aa48b316b28057d53995272baf1260cwrowe} CRDMXBackendWindowInfo;
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#ifdef __cplusplus
1e83c8de3aa48b316b28057d53995272baf1260cwroweextern "C" {
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#endif
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwroweextern int
1e83c8de3aa48b316b28057d53995272baf1260cwrowecrDMXSupported(Display *dpy);
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwroweextern CRDMXBackendWindowInfo *
1e83c8de3aa48b316b28057d53995272baf1260cwrowecrDMXAllocBackendWindowInfo(unsigned int numBackendWindows);
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwroweextern void
1e83c8de3aa48b316b28057d53995272baf1260cwrowecrDMXFreeBackendWindowInfo(unsigned int numBackendWindows,
1e83c8de3aa48b316b28057d53995272baf1260cwrowe CRDMXBackendWindowInfo *backendWindows);
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe/* Given the DMX front-end display "dpy" and window "xwin", update the
1e83c8de3aa48b316b28057d53995272baf1260cwrowe * backend window information in "backendWindows". If new subwindows are
1e83c8de3aa48b316b28057d53995272baf1260cwrowe * needed, and an OpenGL interface pointer is provided, use that interface
1e83c8de3aa48b316b28057d53995272baf1260cwrowe * and the subwindowVisBits to create new subwindows.
1e83c8de3aa48b316b28057d53995272baf1260cwrowe */
1e83c8de3aa48b316b28057d53995272baf1260cwroweextern GLboolean
1e83c8de3aa48b316b28057d53995272baf1260cwrowecrDMXGetBackendWindowInfo(Display *dpy, GLXDrawable xwin,
1e83c8de3aa48b316b28057d53995272baf1260cwrowe unsigned int numBackendWindows,
56e85d89d42a6980f31b800266649efbed338da3wrowe CRDMXBackendWindowInfo *backendWindows,
1e83c8de3aa48b316b28057d53995272baf1260cwrowe const crOpenGLInterface *openGlInterface,
1e83c8de3aa48b316b28057d53995272baf1260cwrowe GLint subwindowVisBits);
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
8c8173f49dd7122e10636b3d20ae841551bd0b43wrowe
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#ifdef __cplusplus
1e83c8de3aa48b316b28057d53995272baf1260cwrowe}
1e83c8de3aa48b316b28057d53995272baf1260cwrowe#endif
1e83c8de3aa48b316b28057d53995272baf1260cwrowe
dcf1a2f80f16265f00fe147de1dbd91af9c32a42wrowe#endif /* CR_DLM_H */
3082ab8b90e027fa27680f140987ea7e20df5088wrowe