From 475c4ee51841405df2af00a8d092f98c39a28cbf Mon Sep 17 00:00:00 2001
From: iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a>
Date: Thu, 15 Nov 2007 11:16:17 +0000
Subject: src/poll_damage.c : REMOVED and replaced by src/poll_events.c
 src/poll_events.c : NEW FILE replaces src/poll_damage.c adding handling for
 shortcuts

git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@432 f606c939-3180-4ac9-a4b8-4b8779d57d0a
---
 recordmydesktop/src/poll_damage.c | 122 ----------------------------
 recordmydesktop/src/poll_events.c | 162 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 162 insertions(+), 122 deletions(-)
 delete mode 100644 recordmydesktop/src/poll_damage.c
 create mode 100644 recordmydesktop/src/poll_events.c

(limited to 'recordmydesktop')

diff --git a/recordmydesktop/src/poll_damage.c b/recordmydesktop/src/poll_damage.c
deleted file mode 100644
index f388a14..0000000
--- a/recordmydesktop/src/poll_damage.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/******************************************************************************
-*                            recordMyDesktop                                  *
-*******************************************************************************
-*                                                                             *
-*            Copyright (C) 2006,2007 John Varouhakis                          *
-*                                                                             *
-*                                                                             *
-*   This program is free software; you can redistribute it and/or modify      *
-*   it under the terms of the GNU General Public License as published by      *
-*   the Free Software Foundation; either version 2 of the License, or         *
-*   (at your option) any later version.                                       *
-*                                                                             *
-*   This program is distributed in the hope that it will be useful,           *
-*   but WITHOUT ANY WARRANTY; without even the implied warranty of            *
-*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             *
-*   GNU General Public License for more details.                              *
-*                                                                             *
-*   You should have received a copy of the GNU General Public License         *
-*   along with this program; if not, write to the Free Software               *
-*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  *
-*                                                                             *
-*                                                                             *
-*                                                                             *
-*   For further information contact me at johnvarouhakis@gmail.com            *
-******************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-    #include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/Xlibint.h>
-#include <X11/extensions/Xdamage.h>
-#include <pthread.h>
-#include <rmdfunc.h>
-#include <rmdtypes.h>
-#include <rmdmacro.h>
-
-int rmdErrorHandler( Display *dpy, XErrorEvent *e )
-{
-    char error_desc[1024];
-    XGetErrorText(dpy,e->error_code,error_desc,sizeof(error_desc));
-    fprintf(stderr,"X Error: %s\n",error_desc);
-    fflush(stderr);
-    if((e->error_code==BadWindow)&&(e->request_code==X_GetWindowAttributes)){
-        fprintf(stderr,"BadWindow on XGetWindowAttributes.\nIgnoring...\n");
-        fflush(stderr);
-        return 0;
-    }
-    else
-        exit(1);
-}
-
-void *PollDamage(ProgData *pdata){
-    Window root_return,
-           parent_return,
-           *children;
-    unsigned int i,
-                 nchildren,
-                 inserts=0;
-    XEvent event;
-
-    XSetErrorHandler(rmdErrorHandler);
-
-    XSelectInput (pdata->dpy,pdata->specs.root, SubstructureNotifyMask);
-
-    XQueryTree (pdata->dpy,
-                pdata->specs.root,
-                &root_return,
-                &parent_return,
-                &children,
-                &nchildren);
-
-    for (i = 0; i < nchildren; i++){
-        XWindowAttributes attribs;
-        if (XGetWindowAttributes (pdata->dpy,children[i],&attribs)){
-            if(!attribs.override_redirect && attribs.depth==pdata->specs.depth)
-                XDamageCreate(pdata->dpy,
-                              children[i],
-                              XDamageReportRawRectangles);
-        }
-    }
-    XFree(children);
-    XDamageCreate(pdata->dpy,pdata->specs.root,XDamageReportRawRectangles);
-
-
-    while(pdata->running){
-        XNextEvent(pdata->dpy,&event);
-        if (event.type == MapNotify ){
-            XWindowAttributes attribs;
-            if (!((XMapEvent *)(&event))->override_redirect&&
-                XGetWindowAttributes(pdata->dpy,
-                                     event.xcreatewindow.window,
-                                     &attribs)){
-                if(!attribs.override_redirect&&
-                   attribs.depth==pdata->specs.depth)
-                    XDamageCreate(pdata->dpy,
-                                  event.xcreatewindow.window,
-                                  XDamageReportRawRectangles);
-            }
-        }
-        else if(event.type == pdata->damage_event + XDamageNotify ){
-            XDamageNotifyEvent *e =(XDamageNotifyEvent *)( &event );
-            WGeometry wgeom;
-            CLIP_EVENT_AREA(e,&(pdata->brwin),&wgeom);
-            if((wgeom.x>=0)&&(wgeom.y>=0)&&(wgeom.width>0)&&(wgeom.height>0))
-            {
-                int tlist_sel=pdata->list_selector;
-                pthread_mutex_lock(&pdata->list_mutex[tlist_sel]);
-                inserts+=RectInsert(&pdata->rect_root[tlist_sel],&wgeom);
-                pthread_mutex_unlock(&pdata->list_mutex[tlist_sel]);
-            }
-        }
-
-    }
-
-    pthread_exit(&errno);
-}
-
diff --git a/recordmydesktop/src/poll_events.c b/recordmydesktop/src/poll_events.c
new file mode 100644
index 0000000..497b593
--- /dev/null
+++ b/recordmydesktop/src/poll_events.c
@@ -0,0 +1,162 @@
+/******************************************************************************
+*                            recordMyDesktop                                  *
+*******************************************************************************
+*                                                                             *
+*            Copyright (C) 2006,2007 John Varouhakis                          *
+*                                                                             *
+*                                                                             *
+*   This program is free software; you can redistribute it and/or modify      *
+*   it under the terms of the GNU General Public License as published by      *
+*   the Free Software Foundation; either version 2 of the License, or         *
+*   (at your option) any later version.                                       *
+*                                                                             *
+*   This program is distributed in the hope that it will be useful,           *
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of            *
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             *
+*   GNU General Public License for more details.                              *
+*                                                                             *
+*   You should have received a copy of the GNU General Public License         *
+*   along with this program; if not, write to the Free Software               *
+*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  *
+*                                                                             *
+*                                                                             *
+*                                                                             *
+*   For further information contact me at johnvarouhakis@gmail.com            *
+******************************************************************************/
+
+
+#ifdef HAVE_CONFIG_H
+    #include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <X11/Xlib.h>
+#include <X11/Xlibint.h>
+#include <X11/extensions/Xdamage.h>
+#include <pthread.h>
+#include <rmdfunc.h>
+#include <rmdtypes.h>
+#include <rmdmacro.h>
+
+int rmdErrorHandler( Display *dpy, XErrorEvent *e )
+{
+    char error_desc[1024];
+    XGetErrorText(dpy,e->error_code,error_desc,sizeof(error_desc));
+    fprintf(stderr,"X Error: %s\n",error_desc);
+    fflush(stderr);
+    if((e->error_code==BadWindow)&&(e->request_code==X_GetWindowAttributes)){
+        fprintf(stderr,"BadWindow on XGetWindowAttributes.\nIgnoring...\n");
+        fflush(stderr);
+        return 0;
+    }
+    else
+        exit(1);
+}
+
+void *PollEvents(ProgData *pdata){
+    Window root_return,
+           parent_return,
+           *children;
+    unsigned int i,
+                 nchildren,
+                 inserts=0;
+    XEvent event;
+
+    XSetErrorHandler(rmdErrorHandler);
+
+    XSelectInput (pdata->dpy,pdata->specs.root, SubstructureNotifyMask);
+
+    if(!pdata->args.full_shots){
+        XQueryTree (pdata->dpy,
+                    pdata->specs.root,
+                    &root_return,
+                    &parent_return,
+                    &children,
+                    &nchildren);
+
+        for (i = 0; i < nchildren; i++){
+            XWindowAttributes attribs;
+            if (XGetWindowAttributes (pdata->dpy,children[i],&attribs)){
+                if(!attribs.override_redirect && 
+                   attribs.depth==pdata->specs.depth)
+                    XDamageCreate(pdata->dpy,
+                                  children[i],
+                                  XDamageReportRawRectangles);
+            }
+        }
+        XFree(children);
+        XDamageCreate(pdata->dpy,
+                      pdata->specs.root,
+                      XDamageReportRawRectangles);
+    }
+
+
+    while(pdata->running){
+        XNextEvent(pdata->dpy,&event);
+        if(event.type == KeyPress){
+            XKeyEvent *e=(XKeyEvent *)(&event);
+            if(e->keycode == pdata->pause_key.key){
+                int i=0;
+                int found=0;
+                for(i=0;i<pdata->pause_key.modnum;i++){
+                    if(pdata->pause_key.mask[i]==e->state){
+                        found=1;
+                        break;
+                    }
+                }
+                if(found){
+                    raise(SIGUSR1);
+                    continue;
+                }
+            }
+            if(e->keycode == pdata->stop_key.key){
+                int i=0;
+                int found=0;
+                for(i=0;i<pdata->stop_key.modnum;i++){
+                    if(pdata->stop_key.mask[i]==e->state){
+                        found=1;
+                        break;
+                    }
+                }
+                if(found){
+                    raise(SIGINT);
+                    continue;
+                }
+            }
+        }
+        else if(!pdata->args.full_shots){
+            if(event.type == MapNotify ){
+                XWindowAttributes attribs;
+                if (!((XMapEvent *)(&event))->override_redirect&&
+                    XGetWindowAttributes(pdata->dpy,
+                                         event.xcreatewindow.window,
+                                         &attribs)){
+                    if(!attribs.override_redirect&&
+                       attribs.depth==pdata->specs.depth)
+                        XDamageCreate(pdata->dpy,
+                                      event.xcreatewindow.window,
+                                      XDamageReportRawRectangles);
+                }
+            }
+            else if(event.type == pdata->damage_event + XDamageNotify ){
+                XDamageNotifyEvent *e =(XDamageNotifyEvent *)( &event );
+                WGeometry wgeom;
+                CLIP_EVENT_AREA(e,&(pdata->brwin),&wgeom);
+                if((wgeom.x>=0)&&(wgeom.y>=0)&&
+                   (wgeom.width>0)&&(wgeom.height>0)){
+
+                    int tlist_sel=pdata->list_selector;
+                    pthread_mutex_lock(&pdata->list_mutex[tlist_sel]);
+                    inserts+=RectInsert(&pdata->rect_root[tlist_sel],&wgeom);
+                    pthread_mutex_unlock(&pdata->list_mutex[tlist_sel]);
+
+                }
+            }
+        }
+
+    }
+
+    pthread_exit(&errno);
+}
+
-- 
cgit v1.2.3