diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2018-05-23 13:41:01 +0200 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2018-05-23 13:41:01 +0200 |
commit | aaf3b5b832aa1803918aa8653a9e397a7ed3b1e5 (patch) | |
tree | 8045d963306c21bb3121353174281d6397330e74 /surface.c | |
parent | d910393a63f610d55c07408fd6f4547b86635988 (diff) |
Implement fill rects
Diffstat (limited to 'surface.c')
-rw-r--r-- | surface.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -33,11 +33,35 @@ long draw_lines(struct file *filp, unsigned long arg) return param->lines_num; } +long fill_rects(struct file *filp, unsigned long arg) +{ + struct surface_data *surface_data; + struct doomdev_surf_ioctl_fill_rects *param; + struct doomdev_fill_rect *rects; + int i; + + surface_data = filp->private_data; + param = (struct doomdev_surf_ioctl_fill_rects *) arg; + rects = (struct doomdev_fill_rect *) param->rects_ptr; + + mutex_lock(&surface_data->doom_data->cmd_mutex); + + for (i = 0; i < param->rects_num; i++) { + fill_rect(surface_data, rects[i]); + } + + mutex_unlock(&surface_data->doom_data->cmd_mutex); + + return param->rects_num; +} + long surface_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { switch (cmd) { case DOOMDEV_SURF_IOCTL_DRAW_LINES: return draw_lines(filp, arg); + case DOOMDEV_SURF_IOCTL_FILL_RECTS: + return fill_rects(filp, arg); default: return -1; } |