This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository telekinesis. from be2bca6 Rework of "Supporting Services" new 416baa8 Future rework and improvements of SupportingServices The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: X2Go/Telekinesis/Client/Supporting_Services.pm | 31 ++++++++++----------- client/bin/telekinesis-client | 35 +++++++++++++----------- 2 files changed, 33 insertions(+), 33 deletions(-) -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/telekinesis.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository telekinesis. commit 416baa8fbe665a49b4fbb2f8c06c6e964b94764a Author: gznget <opensource@gznianguan.com> Date: Thu Aug 28 12:59:31 2014 +0200 Future rework and improvements of SupportingServices --- X2Go/Telekinesis/Client/Supporting_Services.pm | 31 ++++++++++----------- client/bin/telekinesis-client | 35 +++++++++++++----------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/X2Go/Telekinesis/Client/Supporting_Services.pm b/X2Go/Telekinesis/Client/Supporting_Services.pm index 3f6c7a2..b75aa6b 100644 --- a/X2Go/Telekinesis/Client/Supporting_Services.pm +++ b/X2Go/Telekinesis/Client/Supporting_Services.pm @@ -18,32 +18,29 @@ # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Copyright (C) 2013-2014 Guangzhou Nianguan Electronics Technology Co.Ltd. <opensource@gznianguan.com> +# Copyright (C) 2013-2014 Mike Gabriel <mike.gabriel@das-netzwerkteam.de> # ################################################################################################################# package X2Go::Telekinesis::Client::Supporting_Services; use strict; use Exporter qw(import); - +use X11::Protocol; our @EXPORT_OK = qw(getActiveWindowAndDTSIZE); sub getActiveWindowAndDTSIZE { - my $return; - my $returnX; - my $returnY; - open(RUN, '-|', "xprop", '-root'); - while (<RUN>) { - my $line = $_; - $line =~ s/[\n\ ]//g; - if ($line =~ /^_NET_ACTIVE_WINDOW\(WINDOW\):windowid#([a-z\d]{9})/) { - $return = $1; - } elsif ($line =~ /^_NET_DESKTOP_GEOMETRY\(CARDINAL\)\=([\d]{1,5})\,([\d]{1,5})$/) { - $returnX = $1; - $returnY = $2; - } - } - close(RUN); - return ($return,$returnX,$returnY); + my $x11 = X11::Protocol->new(); + my $screen = 0; + my $width = $x11->{'screens'}[$screen]{'width_in_pixels'}; + my $height = $x11->{'screens'}[$screen]{'height_in_pixels'}; + $width =~ s/\D//g; + $height =~ s/\D//g; + + my $focused_win; + ($focused_win, undef) = $x11->GetInputFocus; + $focused_win =~ s/\D//g; + + return ($focused_win,$width,$height); } diff --git a/client/bin/telekinesis-client b/client/bin/telekinesis-client index da0fdca..8bafc66 100644 --- a/client/bin/telekinesis-client +++ b/client/bin/telekinesis-client @@ -222,7 +222,6 @@ sub coreRunSTATEchanges { dbugPrint("Connected?\nTrying to authenticate with:$wormholeToken"); print $TheWormhole "IDC|$wormholeToken|\n"; $TnW{'WormholeWatcher'} = Glib::IO->add_watch( fileno($TheWormhole), [qw/in hup err/], \&CShandleTheWormhole, $TheWormhole ); - Gtk2->main_iteration while Gtk2->events_pending; } else { #$TheWormhole->close; #$TheWormhole= undef; @@ -450,7 +449,7 @@ sub initBuiltInServices { dbugPrint("Service STARTED"); $TeKiServices{'StateOfX2GoCliWin'}{'active'} = 1; $TeKiServices{'StateOfX2GoCliWin'}{'loopCnt'} = 0; - $TeKiServices{'StateOfX2GoCliWin'}{'glibTimeoutID'} = Glib::Timeout->add (30, \&runStateOfX2GoCliWin);# Make this configurable? + $TeKiServices{'StateOfX2GoCliWin'}{'glibTimeoutID'} = Glib::Timeout->add (50, \&runStateOfX2GoCliWin);# Make this configurable? } else { dbugPrint("Service already started..."); } @@ -465,40 +464,44 @@ sub initBuiltInServices { sub runStateOfX2GoCliWin { if ($TeKiServices{'StateOfX2GoCliWin'}{'active'} eq 1) { - unless ($TeKiServices{'StateOfX2GoCliWin'}{'heXid'}) { + unless ($TeKiServices{'StateOfX2GoCliWin'}{'DecWid'}) { if (-f "$X2GoSesHome/session.window") { open(SWXID,"$X2GoSesHome/session.window"); my ($tmpSwXid,undef) = <SWXID>; close(SWXID); if ($tmpSwXid =~ /ID:(\d*)/) { dbugPrint("session.window file OK ($1)"); - $TeKiServices{'StateOfX2GoCliWin'}{'heXid'} = sprintf("0x%x",$1); + $TeKiServices{'StateOfX2GoCliWin'}{'DecWid'} = $1; $TeKiServices{'StateOfX2GoCliWin'}{'theWindow'} = Gtk2::Gdk::Window->foreign_new($1); } } } if ($TeKiServices{'StateOfX2GoCliWin'}{'theWindow'}) { -# dbugPrint("theWindow is OK"); + if ($TeKiServices{'StateOfX2GoCliWin'}{'loopCnt'} < 1) { - dbugPrint("GET ACTIVE WINDOW INFO!"); - ($TeKiServices{'StateOfX2GoCliWin'}{'ActiveWID'},$TeKiServices{'StateOfX2GoCliWin'}{'DeskX'},$TeKiServices{'StateOfX2GoCliWin'}{'DeskY'}) = getActiveWindowAndDTSIZE(); - $TeKiServices{'StateOfX2GoCliWin'}{'loopCnt'} = 8; - } else {$TeKiServices{'StateOfX2GoCliWin'}{'loopCnt'}--;} - my $DeskX = $TeKiServices{'StateOfX2GoCliWin'}{'DeskX'}; - my $DeskY = $TeKiServices{'StateOfX2GoCliWin'}{'DeskY'}; + ($TeKiServices{'StateOfX2GoCliWin'}{'ActiveWID'},$TeKiServices{'StateOfX2GoCliWin'}{'DeskW'},$TeKiServices{'StateOfX2GoCliWin'}{'DeskH'}) = getActiveWindowAndDTSIZE(); + $TeKiServices{'StateOfX2GoCliWin'}{'loopCnt'} = 5; + } else { + $TeKiServices{'StateOfX2GoCliWin'}{'loopCnt'}--; + } + my $DeskW = $TeKiServices{'StateOfX2GoCliWin'}{'DeskW'}; + my $DeskH = $TeKiServices{'StateOfX2GoCliWin'}{'DeskH'}; my $FullScreen = 0; my $Visible = 0; my ($ax,$ay) = $TeKiServices{'StateOfX2GoCliWin'}{'theWindow'}->get_origin; my ($relx, $rely, $w, $h, undef) = $TeKiServices{'StateOfX2GoCliWin'}{'theWindow'}->get_geometry; - if ($TeKiServices{'StateOfX2GoCliWin'}{'ActiveWID'} eq $TeKiServices{'StateOfX2GoCliWin'}{'heXid'}) { + if ($TeKiServices{'StateOfX2GoCliWin'}{'ActiveWID'} eq $TeKiServices{'StateOfX2GoCliWin'}{'DecWid'}) { $Visible = 1; } -#dbugPrint("SIZES: $DeskX x $DeskY $w x $h $relx, $rely, $ax,$ay"); - if (($w >= $DeskX) and ($h >= $DeskY)) { - $FullScreen = 1; + + if (($w >= $DeskW) and ($h >= $DeskH)) { + if (($relx == 0) and ($rely == 0)) {if (($ax == 0) and ($ay == 0)) { + $FullScreen = 1; + }} } + if ( ($TeKiServices{'StateOfX2GoCliWin'}{'data'}{'FullScreen'} ne $FullScreen) or ($TeKiServices{'StateOfX2GoCliWin'}{'data'}{'Visible'} ne $Visible) or @@ -521,7 +524,7 @@ sub runStateOfX2GoCliWin { } else { $SendString = clups("0|$Visible|$ax|$ay|$h|$w"); } - + dbugPrint("StateOfX2GoCW: A:$TeKiServices{'StateOfX2GoCliWin'}{'ActiveWID'} U:$TeKiServices{'StateOfX2GoCliWin'}{'DecWid'} S:$SendString"); foreach my $chanID (keys $TeKiServices{'StateOfX2GoCliWin'}{'clients'}) { if ($CHANS{$chanID}{'sockclient'}) { my $client = $CHANS{$chanID}{'sockclient'}; -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/telekinesis.git