diff options
author | Joonyoung Shim <jy0922.shim@samsung.com> | 2015-04-28 11:41:39 +0100 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2015-04-28 13:06:28 +0100 |
commit | 4d760d7f46b96a88a2e5f21fa983c4806ece1219 (patch) | |
tree | 923c305767576888b1a55318b05d451e19b4fe31 /tests/modetest | |
parent | 21170a8c63d2e994317b785f7f7e78ab7e0a4ac4 (diff) | |
download | libdrm-4d760d7f46b96a88a2e5f21fa983c4806ece1219.tar.gz libdrm-4d760d7f46b96a88a2e5f21fa983c4806ece1219.tar.bz2 libdrm-4d760d7f46b96a88a2e5f21fa983c4806ece1219.zip |
modetest: clear buffer and framebuffer for planes
Currently we don't destroy buffer and remove framebuffer for
planes when closing modetest.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
[Emil Velikov: Tweak the commit message. fb_id = 0 is unused]
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Diffstat (limited to 'tests/modetest')
-rw-r--r-- | tests/modetest/modetest.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index f2307f29..07ffd44e 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -736,6 +736,7 @@ struct plane_arg { uint32_t w, h; double scale; unsigned int fb_id; + struct bo *bo; char format_str[5]; /* need to leave room for terminating \0 */ unsigned int fourcc; }; @@ -1018,6 +1019,8 @@ static int set_plane(struct device *dev, struct plane_arg *p) if (plane_bo == NULL) return -1; + p->bo = plane_bo; + /* just use single plane format for now.. */ if (drmModeAddFB2(dev->fd, p->w, p->h, p->fourcc, handles, pitches, offsets, &p->fb_id, plane_flags)) { @@ -1050,6 +1053,19 @@ static int set_plane(struct device *dev, struct plane_arg *p) return 0; } +static void clear_planes(struct device *dev, struct plane_arg *p, unsigned int count) +{ + unsigned int i; + + for (i = 0; i < count; i++) { + if (p[i].fb_id) + drmModeRmFB(dev->fd, p[i].fb_id); + if (p[i].bo) + bo_destroy(p[i].bo); + } +} + + static void set_mode(struct device *dev, struct pipe_arg *pipes, unsigned int count) { uint32_t handles[4] = {0}, pitches[4] = {0}, offsets[4] = {0}; @@ -1523,6 +1539,7 @@ int main(int argc, char **argv) if (parse_plane(&plane_args[plane_count], optarg) < 0) usage(argv[0]); + plane_args[plane_count].fb_id = 0; plane_count++; break; case 'p': @@ -1655,6 +1672,9 @@ int main(int argc, char **argv) if (test_cursor) clear_cursors(&dev); + if (plane_count) + clear_planes(&dev, plane_args, plane_count); + if (count) clear_mode(&dev); } |