Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.2:Update
xawtv
xawtv-3.95-no-dga.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xawtv-3.95-no-dga.patch of Package xawtv
diff -Nrbu xawtv-3.95/console/v4l-conf.c xawtv-3.95-OK/console/v4l-conf.c --- xawtv-3.95/console/v4l-conf.c 2005-02-09 15:27:36.000000000 +0300 +++ xawtv-3.95-OK/console/v4l-conf.c 2008-08-26 19:35:18.000000000 +0400 @@ -221,6 +221,21 @@ } } +#ifdef HAVE_LIBXXF86DGA +static int dga_error = 0; +static int dga_error_base; +static int (*orig_xfree_error_handler)(Display *, XErrorEvent *); + +static int dga_error_handler(Display *d, XErrorEvent *e) +{ + if (e->error_code == (dga_error_base + XF86DGANoDirectVideoMode)) { + dga_error = 1; + return 0; + } + return orig_xfree_error_handler(d, e); +} +#endif + static void displayinfo_dga(Display *dpy, struct DISPLAYINFO *d) { @@ -228,7 +243,7 @@ int width,bar,foo,major,minor,flags=0; void *base = NULL; - if (!XF86DGAQueryExtension(dpy,&foo,&bar)) { + if (!XF86DGAQueryExtension(dpy,&foo,&dga_error_base)) { fprintf(stderr,"WARNING: Your X-Server has no DGA support.\n"); return; } @@ -240,7 +255,14 @@ fprintf(stderr,"WARNING: No DGA support available for this display.\n"); return; } + orig_xfree_error_handler = XSetErrorHandler(dga_error_handler); XF86DGAGetVideoLL(dpy,XDefaultScreen(dpy),(void*)&base,&width,&foo,&bar); + XSync(dpy, 0); + XSetErrorHandler(orig_xfree_error_handler); + if (dga_error) { + fprintf(stderr,"WARNING: No DGA direct video mode for this display.\n"); + return; + } d->bpl = width * d->bpp/8; d->base = base; #else diff -Nrbu xawtv-3.95/libng/plugins/drv0-v4l2.c xawtv-3.95-OK/libng/plugins/drv0-v4l2.c --- xawtv-3.95/libng/plugins/drv0-v4l2.c 2008-08-26 19:31:52.000000000 +0400 +++ xawtv-3.95-OK/libng/plugins/drv0-v4l2.c 2008-08-26 19:35:18.000000000 +0400 @@ -593,7 +593,7 @@ return -1; /* double-check settings */ - if (NULL != base && h->ov_fb.base != base) { + if ((NULL != base && h->ov_fb.base != base) || h->ov_fb.base == NULL) { fprintf(stderr,"v4l2: WARNING: framebuffer base address mismatch\n"); fprintf(stderr,"v4l2: me=%p v4l=%p\n",base,h->ov_fb.base); h->ov_error = 1; diff -Nrbu xawtv-3.95/x11/xt.c xawtv-3.95-OK/x11/xt.c --- xawtv-3.95/x11/xt.c 2005-01-11 12:26:43.000000000 +0300 +++ xawtv-3.95-OK/x11/xt.c 2008-08-26 19:35:18.000000000 +0400 @@ -1247,18 +1247,21 @@ } /*----------------------------------------------------------------------*/ +#ifdef HAVE_LIBXXF86DGA +static int xfree_dga_error_base; +#endif void xfree_dga_init(Display *dpy) { #ifdef HAVE_LIBXXF86DGA - int flags,foo,bar,ma,mi; + int flags,foo,ma,mi; if (!do_overlay) return; if (args.dga) { - if (XF86DGAQueryExtension(dpy,&foo,&bar)) { + if (XF86DGAQueryExtension(dpy,&foo,&xfree_dga_error_base)) { XF86DGAQueryDirectVideo(dpy,XDefaultScreen(dpy),&flags); if (flags & XF86DGADirectPresent) { XF86DGAQueryVersion(dpy,&ma,&mi); @@ -1348,6 +1351,19 @@ #endif } +#ifdef HAVE_LIBXXF86DGA +static int (*orig_xfree_error_handler)(Display *, XErrorEvent *); + +static int xfree_dga_error_handler(Display *d, XErrorEvent *e) +{ + if (e->error_code == (xfree_dga_error_base + XF86DGANoDirectVideoMode)) { + have_dga = 0; + return 0; + } + return orig_xfree_error_handler(d, e); +} +#endif + void grabber_init() { @@ -1358,8 +1374,11 @@ #ifdef HAVE_LIBXXF86DGA if (have_dga) { int bar,fred; + orig_xfree_error_handler = XSetErrorHandler(xfree_dga_error_handler); XF86DGAGetVideoLL(dpy,XDefaultScreen(dpy),(void*)&base, &screen.bytesperline,&bar,&fred); + XSync(dpy, 0); + XSetErrorHandler(orig_xfree_error_handler); } #endif if (!do_overlay) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor