summaryrefslogtreecommitdiff
path: root/recordmydesktop/src
diff options
context:
space:
mode:
Diffstat (limited to 'recordmydesktop/src')
-rw-r--r--recordmydesktop/src/rmd_setbrwindow.c70
1 files changed, 39 insertions, 31 deletions
diff --git a/recordmydesktop/src/rmd_setbrwindow.c b/recordmydesktop/src/rmd_setbrwindow.c
index 34bde1d..9ad30b8 100644
--- a/recordmydesktop/src/rmd_setbrwindow.c
+++ b/recordmydesktop/src/rmd_setbrwindow.c
@@ -36,33 +36,37 @@ boolean rmdSetBRWindow( Display *dpy,
ProgArgs *args) {
//before we start recording we have to make sure the ranges are valid
- if (args->windowid==0) {//root window
+ if (args->windowid == 0) {//root window
//first set it up
- brwin->windowid=specs->root;
- brwin->winrect.x=brwin->winrect.y=0;
- brwin->winrect.width=specs->width;
- brwin->winrect.height=specs->height;
- brwin->rrect.x=args->x;
- brwin->rrect.y=args->y;
- brwin->rrect.width=((args->width)? args->width:specs->width-brwin->rrect.x);
- brwin->rrect.height=((args->height)? args->height:specs->height-brwin->rrect.y);
+ brwin->windowid = specs->root;
+ brwin->winrect.x = 0;
+ brwin->winrect.y = 0;
+ brwin->winrect.width = specs->width;
+ brwin->winrect.height = specs->height;
+
+ brwin->rrect.x = args->x;
+ brwin->rrect.y = args->y;
+ brwin->rrect.width = args->width ? args->width : brwin->winrect.width - args->x;
+ brwin->rrect.height = args->height ? args->height : brwin->winrect.height - args->y;
+
//and then check validity
- if ((brwin->rrect.x+brwin->rrect.width>specs->width)||
- (brwin->rrect.y+brwin->rrect.height>specs->height)) {
+ if ( brwin->rrect.x + brwin->rrect.width > specs->width ||
+ brwin->rrect.y + brwin->rrect.height > specs->height) {
+
fprintf(stderr, "Window size specification out of bounds!"
"(current resolution:%dx%d)\n",
- specs->width,specs->height);
+ specs->width, specs->height);
return FALSE;
}
} else {
- Window wchid;
- int transl_x,transl_y;
+ int transl_x, transl_y;
+ Window wchid;
+ XWindowAttributes attribs;
- XWindowAttributes attribs;
- XGetWindowAttributes(dpy,args->windowid,&attribs);
+ XGetWindowAttributes(dpy, args->windowid, &attribs);
- if ((attribs.map_state==IsUnviewable)||(attribs.map_state==IsUnmapped)) {
- fprintf(stderr,"Window must be mapped and visible!\n");
+ if (attribs.map_state == IsUnviewable || attribs.map_state == IsUnmapped) {
+ fprintf(stderr, "Window must be mapped and visible!\n");
return FALSE;
}
@@ -75,25 +79,29 @@ boolean rmdSetBRWindow( Display *dpy,
&transl_y,
&wchid);
- brwin->winrect.x=attribs.x-transl_x;
- brwin->winrect.y=attribs.y-transl_y;
- brwin->winrect.width=attribs.width;
- brwin->winrect.height=attribs.height;
+ brwin->winrect.x = attribs.x - transl_x;
+ brwin->winrect.y = attribs.y - transl_y;
+ brwin->winrect.width = attribs.width;
+ brwin->winrect.height = attribs.height;
+
+ /* XXX FIXME: this check is partial at best, surely windows can be off the low
+ * sides of the screen too...
+ */
+ if ( brwin->winrect.x + brwin->winrect.width > specs->width ||
+ brwin->winrect.y + brwin->winrect.height > specs->height) {
- if ((brwin->winrect.x+brwin->winrect.width>specs->width)||
- (brwin->winrect.y+brwin->winrect.height>specs->height)) {
fprintf(stderr,"Window must be on visible screen area!\n");
return FALSE;
}
- brwin->rrect.x=brwin->winrect.x+args->x;
- brwin->rrect.y=brwin->winrect.y+args->y;
- brwin->rrect.width=((args->width)? args->width:brwin->winrect.width-args->x);
- brwin->rrect.height=((args->height)? args->height:brwin->winrect.height-args->y);
+ brwin->rrect.x = brwin->winrect.x + args->x;
+ brwin->rrect.y = brwin->winrect.y + args->y;
+ brwin->rrect.width = args->width ? args->width : brwin->winrect.width - args->x;
+ brwin->rrect.height = args->height ? args->height : brwin->winrect.height - args->y;
- if ((args->x+brwin->rrect.width>brwin->winrect.width)||
- (args->y+brwin->rrect.height>brwin->winrect.height)) {
- fprintf(stderr,"Specified Area is larger than window!\n");
+ if ( args->x + brwin->rrect.width > brwin->winrect.width ||
+ args->y + brwin->rrect.height > brwin->winrect.height) {
+ fprintf(stderr, "Specified Area is larger than window!\n");
return FALSE;
}
}
© All Rights Reserved