summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a>2007-12-01 02:56:19 +0000
committeriovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a>2007-12-01 02:56:19 +0000
commit9f3f574763e842bcfb2a8411d88d18baea4b3d3a (patch)
tree1de54b4920e2e732cd58a000531b034a3ec73c1a
parentfeee5500811ad81003e9324c60ade31ce6701e19 (diff)
include/rmdtypes.h: added the frame on the pdata struct.
src/get_frame.c: select exposure events for the frame src/poll_events.c: redraw frame on exposure events git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@446 f606c939-3180-4ac9-a4b8-4b8779d57d0a
-rw-r--r--recordmydesktop/include/rmdtypes.h1
-rw-r--r--recordmydesktop/src/get_frame.c15
-rw-r--r--recordmydesktop/src/poll_events.c15
3 files changed, 21 insertions, 10 deletions
diff --git a/recordmydesktop/include/rmdtypes.h b/recordmydesktop/include/rmdtypes.h
index b84a148..317e8c5 100644
--- a/recordmydesktop/include/rmdtypes.h
+++ b/recordmydesktop/include/rmdtypes.h
@@ -321,6 +321,7 @@ typedef struct _ProgData{
unsigned int periodtime,//time that a sound buffer lasts (microsecs)
frametime; //time that a frame lasts (microsecs)
char *window_manager; //name of the window manager at program launch
+ Window shaped_w; //frame
int list_selector, //selector for the rect_roots
damage_event, //damage event base code
damage_error, //damage error base code
diff --git a/recordmydesktop/src/get_frame.c b/recordmydesktop/src/get_frame.c
index b0f9383..fefb6be 100644
--- a/recordmydesktop/src/get_frame.c
+++ b/recordmydesktop/src/get_frame.c
@@ -135,8 +135,7 @@ void *GetFrame(ProgData *pdata){
WGeometry mouse_pos_abs,mouse_pos_rel,mouse_pos_temp;
BRWindow temp_brwin;
Window root_ret,
- child_ret,
- shaped_w=None; //Frame
+ child_ret; //Frame
XFixesCursorImage *xcim=NULL;
XImage *image=NULL,*image_back=NULL; //the image that holds
//the current full screenshot
@@ -186,13 +185,14 @@ void *GetFrame(ProgData *pdata){
}
if(!pdata->args.noframe){
- shaped_w=rmdFrameInit(pdata->dpy,
+ pdata->shaped_w=rmdFrameInit(pdata->dpy,
pdata->specs.screen,
pdata->specs.root,
pdata->brwin.rgeom.x,
pdata->brwin.rgeom.y,
pdata->brwin.rgeom.width,
pdata->brwin.rgeom.height);
+ XSelectInput(pdata->dpy,pdata->shaped_w,ExposureMask);
}
mouse_pos_abs.x=mouse_pos_temp.x=0;
@@ -270,15 +270,10 @@ void *GetFrame(ProgData *pdata){
pdata->specs.height);
if(!pdata->args.noframe){
rmdMoveFrame(pdata->dpy,
- shaped_w,
+ pdata->shaped_w,
temp_brwin.rgeom.x,
temp_brwin.rgeom.y);
- rmdDrawFrame(pdata->dpy,
- pdata->specs.screen,
- shaped_w,
- pdata->brwin.rgeom.width,
- pdata->brwin.rgeom.height);
}
}
@@ -425,7 +420,7 @@ void *GetFrame(ProgData *pdata){
}
if(!pdata->args.noframe){
- XDestroyWindow(pdata->dpy,shaped_w);
+ XDestroyWindow(pdata->dpy,pdata->shaped_w);
}
diff --git a/recordmydesktop/src/poll_events.c b/recordmydesktop/src/poll_events.c
index e78587e..4ddcfae 100644
--- a/recordmydesktop/src/poll_events.c
+++ b/recordmydesktop/src/poll_events.c
@@ -52,6 +52,7 @@ void *PollEvents(ProgData *pdata){
XSelectInput (pdata->dpy,pdata->specs.root, SubstructureNotifyMask);
+
if(!pdata->args.full_shots){
XQueryTree (pdata->dpy,
pdata->specs.root,
@@ -110,6 +111,20 @@ void *PollEvents(ProgData *pdata){
}
}
}
+ else if(event.type == Expose){
+
+ if(event.xexpose.count!=0)
+ continue;
+ else if(!pdata->args.noframe){
+ rmdDrawFrame(pdata->dpy,
+ pdata->specs.screen,
+ pdata->shaped_w,
+ pdata->brwin.rgeom.width,
+ pdata->brwin.rgeom.height);
+
+ }
+
+ }
else if(!pdata->args.full_shots){
if(event.type == MapNotify ){
XWindowAttributes attribs;
© All Rights Reserved