From: Jakob Bornecrantz Date: Thu, 7 Feb 2008 18:22:38 +0000 (+0100) Subject: Small update to modedemo X-Git-Tag: submit/1.0/20121108.012404~642^2~277 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=87d5f9cb2d2812c1da726e38965f0eb78c2b8dfa;p=profile%2Fivi%2Flibdrm.git Small update to modedemo --- diff --git a/tests/modedemo/demo.c b/tests/modedemo/demo.c index 48a4f1f..0882fc9 100644 --- a/tests/modedemo/demo.c +++ b/tests/modedemo/demo.c @@ -201,12 +201,30 @@ int demoCreateScreens(struct demo_driver *driver) void demoTakeDownScreen(struct demo_screen *screen) { - /* TODO Unrefence the BO */ - /* TODO Destroy FB */ - /* TODO take down the mode */ + int fd = screen->driver->fd; + drmBO bo; + + if (screen->crtc) + drmModeSetCrtc(fd, screen->crtc->crtc_id, 0, 0, 0, 0, 0, 0); + + if (screen->fb) + drmModeRmFB(fd, screen->fb->buffer_id); + + /* maybe we should keep a pointer to the bo on the screen */ + if (screen->fb && !drmBOReference(fd, screen->fb->handle, &bo)) { + drmBOUnreference(fd, &bo); + drmBOUnreference(fd, &bo); + } else { + printf("bo error\n"); + } drmModeFreeOutput(screen->output); drmModeFreeCrtc(screen->crtc); + drmModeFreeFB(screen->fb); + + screen->output = NULL; + screen->crtc = NULL; + screen->fb = NULL; } drmModeCrtcPtr demoFindFreeCrtc(struct demo_driver *driver, drmModeOutputPtr output)