diff --git a/cogl-1.8.2-no-drm-hax.patch b/cogl-1.8.2-no-drm-hax.patch new file mode 100644 index 0000000..e19a385 --- /dev/null +++ b/cogl-1.8.2-no-drm-hax.patch @@ -0,0 +1,84 @@ +No, no, no, no, no. If the driver doesn't give you the events you want, +fix the driver. + +diff -up cogl-1.8.2/cogl/winsys/cogl-winsys-glx.c.jx cogl-1.8.2/cogl/winsys/cogl-winsys-glx.c +--- cogl-1.8.2/cogl/winsys/cogl-winsys-glx.c.jx 2011-10-17 09:23:13.000000000 -0400 ++++ cogl-1.8.2/cogl/winsys/cogl-winsys-glx.c 2011-11-01 18:34:38.731529285 -0400 +@@ -56,12 +56,6 @@ + #include + #include + +-#ifdef HAVE_DRM +-#include +-#include +-#include +-#endif +- + #define COGL_ONSCREEN_X11_EVENT_MASK StructureNotifyMask + + typedef struct _CoglContextGLX +@@ -423,20 +417,6 @@ update_winsys_features (CoglContext *con + COGL_WINSYS_FEATURE_VBLANK_WAIT, + TRUE); + +-#ifdef HAVE_DRM +- /* drm is really an extreme fallback -rumoured to work with Via +- * chipsets... */ +- if (!glx_renderer->pf_glXWaitVideoSync) +- { +- if (glx_renderer->dri_fd < 0) +- glx_renderer->dri_fd = open("/dev/dri/card0", O_RDWR); +- if (glx_renderer->dri_fd >= 0) +- COGL_FLAGS_SET (context->winsys_features, +- COGL_WINSYS_FEATURE_VBLANK_WAIT, +- TRUE); +- } +-#endif +- + if (glx_renderer->pf_glXCopySubBuffer || context->glBlitFramebuffer) + COGL_FLAGS_SET (context->winsys_features, + COGL_WINSYS_FEATURE_SWAP_REGION, TRUE); +@@ -1046,24 +1026,6 @@ _cogl_winsys_onscreen_bind (CoglOnscreen + glx_context->current_drawable = drawable; + } + +-#ifdef HAVE_DRM +-static int +-drm_wait_vblank (int fd, drm_wait_vblank_t *vbl) +-{ +- int ret, rc; +- +- do +- { +- ret = ioctl (fd, DRM_IOCTL_WAIT_VBLANK, vbl); +- vbl->request.type &= ~_DRM_VBLANK_RELATIVE; +- rc = errno; +- } +- while (ret && rc == EINTR); +- +- return rc; +-} +-#endif /* HAVE_DRM */ +- + static void + _cogl_winsys_wait_for_vblank (void) + { +@@ -1082,18 +1044,6 @@ _cogl_winsys_wait_for_vblank (void) + (current_count + 1) % 2, + ¤t_count); + } +-#ifdef HAVE_DRM +- else +- { +- drm_wait_vblank_t blank; +- +- COGL_NOTE (WINSYS, "Waiting for vblank (drm)"); +- blank.request.type = _DRM_VBLANK_RELATIVE; +- blank.request.sequence = 1; +- blank.request.signal = 0; +- drm_wait_vblank (glx_renderer->dri_fd, &blank); +- } +-#endif /* HAVE_DRM */ + } + + static guint32 diff --git a/cogl.spec b/cogl.spec index f4f7c2b..1c0ad33 100644 --- a/cogl.spec +++ b/cogl.spec @@ -1,6 +1,6 @@ Name: cogl Version: 1.8.2 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A library for using 3D graphics hardware to draw pretty pictures Group: Development/Libraries @@ -21,6 +21,8 @@ BuildRequires: mesa-libGL-devel BuildRequires: pango-devel BuildRequires: pkgconfig +Patch0: cogl-1.8.2-no-drm-hax.patch + %description Cogl is a small open source library for using 3D graphics hardware to draw pretty pictures. The API departs from the flat state machine style of @@ -60,6 +62,7 @@ This package contains documentation for %{name}. %prep %setup -q +%patch0 -p1 -b .drm %build CFLAGS="$RPM_OPT_FLAGS -fPIC" @@ -96,6 +99,9 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';' %{_datadir}/gtk-doc/html/cogl-2.0-experimental %changelog +* Tue Nov 01 2011 Adam Jackson 1.8.2-3 +- cogl-1.8.2-no-drm-hax.patch: Don't try insane direct DRM vblank wait. + * Wed Oct 26 2011 Fedora Release Engineering - 1.8.2-2 - Rebuilt for glibc bug#747377