| 545 | |
| 546 | |
| 547 | GLXPixmap 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; |
no test coverage detected