MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / glXCreatePixmap

Function glXCreatePixmap

server/faker-glx.cpp:547–605  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

545
546
547GLXPixmap glXCreatePixmap(Display *dpy, GLXFBConfig config_, Pixmap pm,
548 const int *attribs)
549{
550 GLXPixmap drawable = 0;
551 VGLFBConfig config = (VGLFBConfig)config_;
552 faker::VirtualPixmap *vpm = NULL;
553 XVisualInfo *vis = NULL;
554
555 TRY();
556
557 if(IS_EXCLUDED(dpy))
558 return _glXCreatePixmap(dpy, config_, pm, attribs);
559
560 /////////////////////////////////////////////////////////////////////////////
561 OPENTRACE(glXCreatePixmap); PRARGD(dpy); PRARGC(config); PRARGX(pm);
562 STARTTRACE();
563 /////////////////////////////////////////////////////////////////////////////
564
565 if(!VALID_CONFIG(config))
566 {
567 faker::sendGLXError(dpy, X_GLXCreatePixmap, GLXBadFBConfig, false);
568 goto done;
569 }
570 Window root; int x, y; unsigned int w, h, bw, d;
571 if(!pm
572 || !_XGetGeometry(dpy, pm, &root, &x, &y, &w, &h, &bw, &d))
573 {
574 faker::sendGLXError(dpy, X_GLXCreatePixmap, BadPixmap, true);
575 goto done;
576 }
577
578 if(!config->visualID)
579 {
580 faker::sendGLXError(dpy, X_GLXCreatePixmap, BadMatch, true);
581 goto done;
582 }
583 if((vis = glxvisual::visualFromID(dpy, config->screen,
584 config->visualID)) != NULL)
585 {
586 vpm = new faker::VirtualPixmap(dpy, vis->visual, pm);
587 _XFree(vis);
588 }
589 if(vpm)
590 {
591 vpm->init(w, h, d, config, attribs);
592 PMHASH.add(dpy, pm, vpm);
593 GLXDHASH.add(vpm->getGLXDrawable(), dpy);
594 drawable = vpm->getGLXDrawable();
595 }
596
597 done:
598 /////////////////////////////////////////////////////////////////////////////
599 STOPTRACE(); PRARGI(x); PRARGI(y); PRARGI(w); PRARGI(h); PRARGI(d);
600 PRARGX(drawable); CLOSETRACE();
601 /////////////////////////////////////////////////////////////////////////////
602
603 CATCH();
604 return drawable;

Callers 3

offScreenTestFunction · 0.85
extensionQueryTestFunction · 0.85

Calls 5

sendGLXErrorFunction · 0.85
visualFromIDFunction · 0.85
initMethod · 0.45
addMethod · 0.45
getGLXDrawableMethod · 0.45

Tested by

no test coverage detected