From a155e9f88218060c207cf6a152d78b0e47fc7d2d Mon Sep 17 00:00:00 2001 From: enselic Date: Fri, 5 Jun 2009 16:26:52 +0000 Subject: Apply patch from Dominic Evans that fixes capturing of window decorations when compiz is running. git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@600 f606c939-3180-4ac9-a4b8-4b8779d57d0a --- gtk-recordmydesktop/src/rmdSimple.py | 43 +++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'gtk-recordmydesktop/src') diff --git a/gtk-recordmydesktop/src/rmdSimple.py b/gtk-recordmydesktop/src/rmdSimple.py index 1cdf17d..eb85b84 100644 --- a/gtk-recordmydesktop/src/rmdSimple.py +++ b/gtk-recordmydesktop/src/rmdSimple.py @@ -39,7 +39,9 @@ from rmdTrayIcon import * import gtk.gdk import gobject import gc +import sys import re +from subprocess import Popen,PIPE import rmdPrefsWidget as pW import rmdSelectThumb as sT from rmdStrings import * @@ -217,14 +219,39 @@ class simpleWidget(object): self.__fileSelQuit__() def __select_window__(self,button): - xwininfo_com=['xwininfo','-frame'] - if self.values[21]==1: - xwininfo_com=['xwininfo'] - (stdin,stdout,stderr)=os.popen3(xwininfo_com,'t') - wid=stdout.readlines() - stdin.close() - stdout.close() - stderr.close() + # check user has not disabled capture of window decoration + if self.values[21]!=1: + # else work out the size including decoration (also taking into account compiz) + p = Popen(['xwininfo','-frame'],stdout=PIPE) + pattern = re.compile('^xwininfo: Window id: (0x[0-9a-fA-F]+)') + + while True: + o = p.stdout.readline() + if o == '' and p.poll() != None: break + match = pattern.search(o) + if match: + fid = match.group(1) + break + + p = Popen(['xprop','-id',fid,'_NET_FRAME_WINDOW'],stdout=PIPE) + pattern = re.compile('^_NET_FRAME_WINDOW\(WINDOW\): window id # (0x[0-9a-fA-F]+)') + + while True: + o = p.stdout.readline() + if o == '' and p.poll() != None: break + match = pattern.search(o) + if match: + wid = match.group(1) + break + else: + print pattern + print o + + if wid: xwininfo_com = ['xwininfo','-id',wid] + else: xwininfo_com = ['xwininfo'] + p = Popen(xwininfo_com,stdout=PIPE) + wid=p.stdout.readlines() + x=y=width=height=None for i in wid: if i.lstrip().startswith('Absolute upper-left X:'): -- cgit v1.2.3