[X2Go-Commits] [mteleplayer] 14/29: Total rewrite of the overlay visibility and location handling + cleanup
git-admin at x2go.org
git-admin at x2go.org
Fri Aug 29 21:12:03 CEST 2014
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch gzng
in repository mteleplayer.
commit d47ce4168e0ceb7c0bc34f54130bb33e0c714ac8
Author: gznget <opensource at gznianguan.com>
Date: Fri Jul 4 03:54:05 2014 +0200
Total rewrite of the overlay visibility and location handling + cleanup
---
.../mteleplayer/bin/mteleplayer_clientside | 1078 ++++++++++----------
1 file changed, 565 insertions(+), 513 deletions(-)
diff --git a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
index 8594ee0..0ddb134 100755
--- a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
+++ b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
@@ -60,94 +60,115 @@ our $theLIBDIR = sanitizeDirPath("$TeKiPaths{'LIB'}/client/applications/mtelep
my $mpFH = FileHandle->new;
our %CmdFlags = getCmdFlags(@ARGV);
-our ($UserName,$UserHome,$X2GoSID,$X2GoSesHome,$X2GoTKSHome,$TeKiLSockPath) = getBasicClientsideInfo($CmdFlags{'X2GOSID'});
+our ($UserName,$UserHome,$X2GoSID,$X2GoSesHome,$X2GoTKSHome,$TeKiLSockPath) = getBasicClientsideInfo($CmdFlags{'X2GOSID'});
+
appDBugLog("-------------------------------------------\nStarting.....");
+
my $selfSID;
-if (clups($CmdFlags{'OWNSID'}) =~ /^([a-zA-Z0-9]{3,32})$/) {$selfSID = $1;} else {appDBugLog("My own SID is invalid?");doSelfTerminate();}
+if (clups($CmdFlags{'OWNSID'}) =~ /^([a-zA-Z0-9]{3,32})$/) {
+ $selfSID = $1;
+} else {
+ appDBugLog("My own SID is invalid?");
+ doSelfTerminate();
+}
my $slaveToken;
-if (clups($CmdFlags{'SLAVETOKEN'}) =~ /^([a-zA-Z0-9]{3,32})$/) {$slaveToken = $1;}
-else {appDBugLog("Slave token is invalid is invalid?");doSelfTerminate();}
+if (clups($CmdFlags{'SLAVETOKEN'}) =~ /^([a-zA-Z0-9]{3,32})$/) {
+ $slaveToken = $1;
+} else {
+ appDBugLog("Slave token is invalid is invalid?");
+ doSelfTerminate();
+}
our %TnW;
our %sstatusi;
-$sstatusi{'sockState'} = 0;$sstatusi{'sockRetryCnt'} = 0;$sstatusi{'runState'} = "I";$sstatusi{'linkState'} = 0;$sstatusi{'dodgeMouse'} = 0;
-$sstatusi{'startTime'} = time();$sstatusi{'xposX'} = 10;$sstatusi{'xposY'} = 10;$sstatusi{'xposH'} = 0;$sstatusi{'xposW'} = 0;$sstatusi{'xposV'} = 0;
-$sstatusi{'X2GoWFullScreen'} = 1;$sstatusi{'X2GoWVisible'} = 1;$sstatusi{'X2GoWax'} = 0;$sstatusi{'X2GoWay'} = 0;$sstatusi{'X2GoWh'} = 0;$sstatusi{'X2GoWw'} = 0;
-$sstatusi{'FinalPosX'} = 0;$sstatusi{'FinalPosY'} = 0;$sstatusi{'FinalPosH'} = 10;$sstatusi{'FinalPosW'} = 10;$sstatusi{'FinalPosV'} = 0;
+our %olMagic;
+
+$sstatusi{'sockState'} = 0;
+$sstatusi{'sockRetryCnt'} = 0;
+$sstatusi{'runState'} = "I";
+$sstatusi{'linkState'} = 0;
+$sstatusi{'startTime'} = time();
my $RemoteAppDataDIR = sanitizeDirPath("$X2GoTKSHome/remote/appData/mteleplayer_$selfSID");
-unless (-d "$X2GoTKSHome/local/appData") {mkdir("$X2GoTKSHome/local/appData");}
-unless (-d "$X2GoTKSHome/local/appData/mteleplayer_$selfSID") {mkdir("$X2GoTKSHome/local/appData/mteleplayer_$selfSID");}
+
+unless (-d "$X2GoTKSHome/local/appData") {
+ mkdir("$X2GoTKSHome/local/appData");
+}
+
+unless (-d "$X2GoTKSHome/local/appData/mteleplayer_$selfSID") {
+ mkdir("$X2GoTKSHome/local/appData/mteleplayer_$selfSID");
+}
+
my $LocalAppDataDIR = sanitizeDirPath("$X2GoTKSHome/local/appData/mteleplayer_$selfSID");
+
my $SlaveFIFO = "$LocalAppDataDIR/mpslave.fifo";
if (-e $SlaveFIFO) {
- unlink($SlaveFIFO);
+ unlink($SlaveFIFO);
}
mkfifo($SlaveFIFO, 0700);
-unless (-p $SlaveFIFO) {appDBugLog("$SlaveFIFO No FIFO pipe form mplayer slave?");doSelfTerminate();}
+unless (-p $SlaveFIFO) {
+ appDBugLog("$SlaveFIFO No FIFO pipe form mplayer slave?");
+ doSelfTerminate();
+}
+
my $mPlayerPath = "/usr/bin/mplayer";
if (-x "/usr/bin/mplayer2") {
- $mPlayerPath = "/usr/bin/mplayer2";
+ $mPlayerPath = "/usr/bin/mplayer2";
}
-appDBugLog("MPS FIFO: $SlaveFIFO");
-$ENV{'MPSLAVEFIFOPATH'} = $SlaveFIFO;
-$ENV{'MTPSES_LOCALDATA'} = $LocalAppDataDIR;
-$ENV{'MTPC_SHAREPATH'} = $theSHAREDIR;
-my $myHomeDir = $ENV{'MTPC_HOMEPATH'};
-
my $LocalSocket;
-
if (-S $TeKiLSockPath) {
-# We used to do connection stuff here... we still may want to do something here.... who knows...
+ # We used to do connection stuff here... we still may want to do something here.... who knows...
} else {
- appDBugLog("No Telekinesis local socket available at: $TeKiLSockPath\n\nIs Telekinesis even running?");doSelfTerminate();
+ appDBugLog("No Telekinesis local socket available at: $TeKiLSockPath\n\nIs Telekinesis even running?");doSelfTerminate();
}
-
-$sstatusi{'runState'} = "R";
-##################################### ##################################### ##################################### #####################################
-# The Main Gtk2 event loop
-my %mpState;$mpState{'MediaERROR'} = 0;$mpState{'FakeFS'} = 0;$mpState{'mediaPos'} = 0; $mpState{'mediaLength'} = 0;$mpState{'paused'} = 0;
+my %mpState;
+$mpState{'MediaERROR'} = 0;
+$mpState{'FakeFS'} = 0;
+$mpState{'mediaPos'} = 0;
+$mpState{'mediaLength'} = 0;
+$mpState{'paused'} = 0;
$mpState{'noshow'} = 1;
$mpState{'mute'} = 0;
$mpState{'volume'} = 0;# Change this to get from server side!
$mpState{'osd'} = 0;
-$mpState{'LASTINPUT'} = "";$mpState{'prevSecond'} = 0;
+$mpState{'LASTINPUT'} = "";
+$mpState{'prevSecond'} = 0;
###########################33
# INIT MEDIA INFO
my %MediaINFO;
setMediaInfo(0);
# INIT MEDIA INFO
##########################
-$sstatusi{'lastCOMtime'} = (time()+2);
-$TnW{'timeoutRound'} = Glib::Timeout->add (1000, sub {appCOM("YO!");if ($sstatusi{'lastCOMtime'} < (time()-2)) {&doSelfTerminate;}1;});
-#$TnW{'overlaystatechange'} = Glib::Timeout->add (250, \&overlayStateChange);
-connectionPresistance();
+$sstatusi{'lastCOMtime'} = (time()+5);# Initiate "lastCOMtime" so we dont crash and burn before we ever get started...
+$sstatusi{'runState'} = "R";
+##################################### ##################################### ##################################### #####################################
+# The Main Gtk2 event loop
Gtk2->init;
my $window = Gtk2::Window->new('popup');
-$window->set_title('Telekinesis/Teleplay');
+$window->set_title('mTelePlayer OVERLAY');
$window->set_border_width(0);
-$window->set_size_request($sstatusi{'FinalPosW'},$sstatusi{'FinalPosH'});
my $vbox = Gtk2::VBox->new( FALSE, 0 );
my $ebox = Gtk2::EventBox->new;
$ebox->modify_bg('normal',Gtk2::Gdk::Color->new(0x0000, 0x0000, 0x0000));
$vbox->pack_start($ebox, TRUE, TRUE, 0);
$window->add($vbox);
-#$window->set_position ('center-always');
$vbox->set_border_width(0);
-
$window->set_decorated(0);
$window->set_keep_above(1);
$window->signal_connect(event => \&windowEvent);
$window->show_all();
-do_mplayer();
-$window->hide_all();
-$TnW{'transglitcpresistance'} = Glib::Timeout->add (100, \&connectionPresistance);
+&do_mplayer;
+doOverlayMagic('init');
+
+$TnW{'timeoutRound'} = Glib::Timeout->add (1000, sub {appCOM("YO!");if ($sstatusi{'lastCOMtime'} < (time()-2)) {&doSelfTerminate;}1;});
+$TnW{'transglitcpresistance'} = Glib::Timeout->add(100, \&connectionPresistance);
+$TnW{'mouseDeDodger'} = Glib::Timeout->add(100, sub {if ($olMagic{'dodgeMouse'} eq 1) {doOverlayMagic('dodgemouse',0);}1;});
Gtk2->main;
# The Main Gtk2 event loop
@@ -155,534 +176,565 @@ Gtk2->main;
appDBugLog("Execution came to a natural end...");
# Nothing but SUBS past this point....
-##############################################################################################################################################
-############################################################################################################################################
#################################################################################################################################
# HERE IS WHERE WE PUT ALL THE SUBS FOR THIS APP
+
+
#################################################################################################################################
# Basic Socket Stuff
sub connectionPresistance {
- unless ($ENV{'EPICFAIL'} or $EPICFAIL) {
- my $time = time();
-
- if (($sstatusi{'dodgeMouse'} ne 0) ){
-# print " MOUSE DODGE detected! ($sstatusi{'dodgeMouse'} $sstatusi{'xposV'})\n";
- $sstatusi{'dodgeMouse'} = 0;
- if ($sstatusi{'xposV'} eq 1) {
-# print "Re displaying window\n";
- $window->show_all();
- $window->resize($sstatusi{'FinalPosW'},$sstatusi{'FinalPosH'});
- $window->move($sstatusi{'FinalPosX'},$sstatusi{'FinalPosY'});
- }
- }
-
-# appDBugLog("LOOP $time $sstatusi{'sockState'}");
- if ($sstatusi{'startTime'} < ($time-5) and ($sstatusi{'sockState'} ne 3)) {
- appDBugLog("Its been too long and we still dont have a connection?\nTime to give up!");doSelfTerminate();
- }
- if (($sstatusi{'runState'} eq "R") and ($sstatusi{'sockState'} eq 0)) {
- if (($sstatusi{'sockState'} eq 0) and ( ! defined $LocalSocket)) {
- $sstatusi{'sockState'} = 1;
- appDBugLog("Attempting to initiate local socket connection...");
- if ($sstatusi{'sockRetryCnt'} > 0) {# If ther a momentary glitch we'd want to tolerate that but if thers a major problem....
- if ($sstatusi{'sockRetryCnt'} > 10) {# This is a silly attempt at avoiding endless loops when nothing is likely to ever change..
- appDBugLog("Too many retry attemps at opening the socket connection...\nThere is a problem bigger than just a sporadic glitch...");
- doSelfTerminate();
- } else { # And if thers a problem why not give it some time to hopefully recover
- my $sleepTime = (($sstatusi{'sockRetryCnt'}*100000)*2);# For every attempt we wait a bit longer....
- appDBugLog("Sleeping for: $sleepTime u");
- usleep($sleepTime);
- }
- }
- $sstatusi{'sockRetryCnt'}++;
- if (-S $TeKiLSockPath) {
- $LocalSocket= IO::Socket::UNIX->new( Peer => $TeKiLSockPath,
- Type => SOCK_STREAM,
- Timeout => 10 );
- } else {
- appDBugLog("No Telekinesis local socket available at: $TeKiLSockPath\n\nIs Telekinesis even running?");doSelfTerminate();
- }
- if (defined $LocalSocket){
- $sstatusi{'sockRetryCnt'} = 0;
- $sstatusi{'sockState'} = 1;
- appDBugLog("Connected to local socket!");
- $TnW{'LocalSocketWatcher'} = Glib::IO->add_watch( fileno($LocalSocket), [qw/in hup err/], \&handleTheLocalSocket, $LocalSocket);
- print $LocalSocket "APP|INITC|mteleplayer|$selfSID|$slaveToken|\n";
- } else {
- $sstatusi{'sockState'} = 0;
- appDBugLog("ERROR: Can't connect to local socket\nTrying to reconnect in a bit...");
- }
-
-
-
- }
- }
- return 1;
- }
+ unless ($ENV{'EPICFAIL'} or $EPICFAIL) {
+ my $time = time();
+ if ($sstatusi{'startTime'} < ($time-5) and ($sstatusi{'sockState'} ne 3)) {
+ appDBugLog("Its been too long and we still dont have a connection?\nTime to give up!");
+ doSelfTerminate();
+ }
+ if (($sstatusi{'runState'} eq "R") and ($sstatusi{'sockState'} eq 0)) {
+ if (($sstatusi{'sockState'} eq 0) and ( ! defined $LocalSocket)) {
+ $sstatusi{'sockState'} = 1;
+ appDBugLog("Attempting to initiate local socket connection...");
+ if ($sstatusi{'sockRetryCnt'} > 0) {# If ther a momentary glitch we'd want to tolerate that but if thers a major problem....
+ if ($sstatusi{'sockRetryCnt'} > 10) {# This is a silly attempt at avoiding endless loops when nothing is likely to ever change..
+ appDBugLog("Too many retry attemps at opening the socket connection...\nThere is a problem bigger than just a sporadic glitch...");
+ doSelfTerminate();
+ } else { # And if thers a problem why not give it some time to hopefully recover
+ my $sleepTime = (($sstatusi{'sockRetryCnt'}*100000)*2);# For every attempt we wait a bit longer....
+ appDBugLog("Sleeping for: $sleepTime u");
+ usleep($sleepTime);
+ }
+ }
+ $sstatusi{'sockRetryCnt'}++;
+
+ if (-S $TeKiLSockPath) {
+ $LocalSocket= IO::Socket::UNIX->new( Peer => $TeKiLSockPath,
+ Type => SOCK_STREAM,
+ Timeout => 10 );
+ } else {
+ appDBugLog("No Telekinesis local socket available at: $TeKiLSockPath\n\nIs Telekinesis even running?");doSelfTerminate();
+ }
+
+ if (defined $LocalSocket) {
+ $sstatusi{'sockRetryCnt'} = 0;
+ $sstatusi{'sockState'} = 1;
+ appDBugLog("Connected to local socket!");
+ $TnW{'LocalSocketWatcher'} = Glib::IO->add_watch( fileno($LocalSocket), [qw/in hup err/], \&handleTheLocalSocket, $LocalSocket);
+ print $LocalSocket "APP|INITC|mteleplayer|$selfSID|$slaveToken|\n";
+ } else {
+ $sstatusi{'sockState'} = 0;
+ appDBugLog("ERROR: Can't connect to local socket\nTrying to reconnect in a bit...");
+ }
+
+ }
+ }
+
+ return 1;
+ }
}
#################################################################################################################################
# Handle incomming stuff from the localsocket
sub handleTheLocalSocket {
- my ( $fd, $condition, $fh ) = @_;
- if ( $condition >= 'hup' or $condition >= 'err' ) {
- $sstatusi{'sockState'} = 0;
- $LocalSocket->close;
- $LocalSocket = undef;
- return 0;
- }
- if ( $condition >= 'in' ) {
- my $bytes = sysread($fh,my $data,4096);
- if ( length $data ) {
- foreach my $dataLine (split(/\n/,$data)) {if (length(clups($dataLine)) > 0) {
- # Do something smarter in the future
- my $saneData = sanitizer("anumazcsdausdotspipe","$dataLine");
-
-# if ($sstatusi{'sockState'} eq 1) {}
- if ($saneData =~ /^APPCOM\|(.*)$/) {
- $sstatusi{'lastCOMtime'} = time();
- if ($1 =~ /^HELLO/) {
- $sstatusi{'sockState'} = 3;
- print $LocalSocket "CORE|LOCALSERVICES|mteleplayer|$selfSID|StateOfX2GoCliWin|\n";
- } elsif ($1 =~ /^TERMINATE/) {
- doSelfTerminate();
- }
- if ($1 =~ /^SET\|AUDIOVOLUME\|(\d{1,3})\|.*/) {
- my $newVol = $1;
- if (($newVol >= 0) and ($newVol <= 100)) {
- $mpState{'volume'} = $newVol;
- mpCMD("volume $mpState{'volume'} 1");
- }
- }
- if ($1 =~ /^XPOSTAT\|(\d*)\|(\d*)\|(\d*)\|(\d*)\|(\d)\|/) {
- $sstatusi{'xposX'} = $1;
- $sstatusi{'xposY'} = $2;
- $sstatusi{'xposH'} = $3;
- $sstatusi{'xposW'} = $4;
- $sstatusi{'xposV'} = $5;
- overlayStateChange();
- }
+ my ( $fd, $condition, $fh ) = @_;
+
+ if ( $condition >= 'hup' or $condition >= 'err' ) {
+ $sstatusi{'sockState'} = 0;
+ $LocalSocket->close;
+ $LocalSocket = undef;
+ return 0;
+ }
+
+ if ( $condition >= 'in' ) {
+ my $bytes = sysread($fh,my $data,4096);
+ if (length($data) > 0) {
+ foreach my $dataLine (split(/\n/,$data)) {
+ if (length(clups($dataLine)) > 0) {
+ my $saneData = sanitizer("anumazcsdausdotspipe","$dataLine");
+
+ if ($saneData =~ /^APPCOM\|(.*)$/) {
+ $sstatusi{'lastCOMtime'} = time();
+ if ($1 =~ /^HELLO/) {
+ $sstatusi{'sockState'} = 3;
+ print $LocalSocket "CORE|LOCALSERVICES|mteleplayer|$selfSID|StateOfX2GoCliWin|\n";
+ } elsif ($1 =~ /^TERMINATE/) {
+ doSelfTerminate();
+ }
+ if ($1 =~ /^SET\|AUDIOVOLUME\|(\d{1,3})\|.*/) {
+ my $newVol = $1;
+ if (($newVol >= 0) and ($newVol <= 100)) {
+ $mpState{'volume'} = $newVol;
+ mpCMD("volume $mpState{'volume'} 1");
+ }
+ }
+ if ($1 =~ /^XPOSTAT\|(\-?\d*)\|(\-?\d*)\|(\d*)\|(\d*)\|(\d)\|.*/) {
+ doOverlayMagic('ssappwin',$1,$2,$3,$4,$5);
+ }
-if ($1 =~ /^MPCMD\|PLAYMEDIA\|([0-9a-zA-Z]{24,64})\|([A-Z]{3,4})\|(\d*)\|(\d*)\|.*/) {
- my $Type = 0;
- my $StartSeek = 0;
- my $StartPaused = 0;
- if ($3 > 0) {
- $StartSeek = $3;
+ if ($1 =~ /^MPCMD\|PLAYMEDIA\|([0-9a-zA-Z]{24,64})\|([A-Z]{3,4})\|(\d*)\|(\d*)\|.*/) {
+ my $Type = 0;
+ my $StartSeek = 0;
+ my $StartPaused = 0;
+ if ($3 > 0) {
+ $StartSeek = $3;
+ }
+ if ($4 eq 1) {$StartPaused = 1;}
+ appDBugLog("GOT PLAY COMMAND: 1:$1 2:$2 3:$3");
+ if ($2 eq "FILE") {
+ my $theMediaFilePath = "$RemoteAppDataDIR/$1.file";# SANETIZE THIS MAYBE?
+ appDBugLog(" FILE:$theMediaFilePath");
+ if (-e $theMediaFilePath) {
+ appDBugLog("THAT FILE EXISTS!!");
+ doOverlayMagic('onlyaudio',1);# Just abusing the "onlyaudio" function to hide overlay while caching...
+ setMediaInfo(0);
+ mpCMD("loadfile $theMediaFilePath");
+ if ($mpState{'FakeFS'} ne 1) {mpCMD("osd 0");}
+ mpCMD("volume $mpState{'volume'} 1");
+ mpCMD("pausing pause");# Load into a paused state
+ if ($StartSeek > 0) {
+ mpCMD("seek $StartSeek 2");
+ }
+ if ($StartPaused ne 1) {
+ mpCMD("pause");# Unpause
+ }
+ }
+ }
+ # elsif ($2 =~ /URL/) {$Type = "url";}
+
+ } elsif ($1 =~ /^MPCMD\|FRAMESTEP\|/) {
+ mpCMD("frame_step");
+ } elsif ($1 =~ /^MPCMD\|PAUSE\|/) {
+ mpCMD("pausing pause");
+ } elsif ($1 =~ /^MPCMD\|PLAY\|/) {
+ mpCMD("pausing pause");
+ mpCMD("pause");
+ } elsif ($1 =~ /^MPCMD\|SEEK\|(\d*)\|/) {
+ if ($1 <= $mpState{'mediaLength'}) {
+ mpCMD("seek $1 2");
+ }
+ } elsif ($1 =~ /^MPCMD\|KEYSEEK\|(\-?\d*)\|/) {
+ my $newPos = ($mpState{'mediaPos'}+$1);
+ if ($newPos < 0) {$newPos = 0;}
+ if ($newPos > ($mpState{'mediaLength'}-1)) {
+ mpCMD("pausing frame_step");
+ inList2Play("next");
+ } else {
+ mpCMD("seek $newPos 2");
+ }
+ }
+
+ } elsif ($saneData =~ /^CORE\|SERVICES\|X2GOWINDOWSTATE\|(\d)\|(\d)\|(\-?\d*)\|(\-?\d*)\|(\d*)\|(\d*)\|/) {
+ doOverlayMagic('csseswin',$1,$2,$3,$4,$5,$6);
+ } elsif ($saneData =~ /^TERMINATE\|([\w\_]*)\|$/) {
+ my $vmessage;
+ if ($1 =~ /NO_PAIR1/) {
+ $vmessage = "Client and server dont seem to be on the same page....\n\nIncompatible versions of mTelePlayer on the cliet side...";
+ } elsif ($1 =~ /NO_PAIR2/) {
+ $vmessage = "Client and server dont seem to be on the same page....\n\nThe client side do not have mTelePlayer installed!?";
+ } elsif ($1 =~ /DUPLICATE/) {
+ $vmessage = "Killed in the name of duplicate termination!";
+ }
+ appDBugLog($vmessage);
+ doSelfTerminate();
+ }
+ appDBugLog("RMX:$saneData");
+ }
+ }
+
+ } else {
+ appDBugLog("Closing local socket..");
+ $LocalSocket->close;
+ $fh->close;
+ $fh = undef;
+ $sstatusi{'sockState'} = 0;
+ return 0;
+ }
+ }
- }
- if ($4 eq 1) {$StartPaused = 1;}
- appDBugLog("GOT PLAY COMMAND: 1:$1 2:$2 3:$3");
- if ($2 eq "FILE") {
- my $theMediaFilePath = "$RemoteAppDataDIR/$1.file";# SANETIZE THIS MAYBE?
- appDBugLog(" FILE:$theMediaFilePath");
- if (-e $theMediaFilePath) {
- appDBugLog(" THAT FILE EXISTS!!");
- setMediaInfo(0);
- $mpState{'noshow'} = 1;
- overlayStateChange();
- mpCMD("loadfile $theMediaFilePath");
- if ($mpState{'FakeFS'} ne 1) {mpCMD("osd 0");}
- mpCMD("volume $mpState{'volume'} 1");
- mpCMD("pausing pause");# Load into a paused state
- if ($StartSeek > 0) {
- mpCMD("seek $StartSeek 2");
- }
- if ($StartPaused ne 1) {
- mpCMD("pause");# Unpause
- }
- }
- }
-# elsif ($2 =~ /URL/) {$Type = "url";}
-
- $window->show_all();
- $window->resize($sstatusi{'FinalPosW'},$sstatusi{'FinalPosH'});
- $window->move($sstatusi{'FinalPosX'},$sstatusi{'FinalPosY'});
- overlayStateChange();
-} elsif ($1 =~ /^MPCMD\|FRAMESTEP\|/) {
- mpCMD("frame_step");
-} elsif ($1 =~ /^MPCMD\|PAUSE\|/) {
- mpCMD("pausing pause");
-} elsif ($1 =~ /^MPCMD\|PLAY\|/) {
- mpCMD("pausing pause");
- mpCMD("pause");
-} elsif ($1 =~ /^MPCMD\|SEEK\|(\d*)\|/) {
- if ($1 <= $mpState{'mediaLength'}) {
- mpCMD("seek $1 2");
- }
-} elsif ($1 =~ /^MPCMD\|KEYSEEK\|(\-?\d*)\|/) {
- my $newPos = ($mpState{'mediaPos'}+$1);
- if ($newPos < 0) {$newPos = 0;}
- if ($newPos > ($mpState{'mediaLength'}-1)) {
- mpCMD("pausing frame_step");
- inList2Play("next");
- } else {
- mpCMD("seek $newPos 2");
- }
-}
-
-
-#if ($1 =~ /^MPCMD\|STOP\|/) {
-# mpCMD("pausing loadfile $theSHAREDIR/blk.mpg");
-# mpCMD("pause");
-# $window->hide_all();
-#}
- } elsif ($saneData =~ /^CORE\|SERVICES\|X2GOWINDOWSTATE\|(\d)\|(\d)\|(\d*)\|(\d*)\|(\d*)\|(\d*)\|/) {
-#print "CORE CHANGE $1\n";
- my $retogglevis = 0;
- if ($sstatusi{'X2GoWFullScreen'} ne $1) {$retogglevis = 1;}
-# if (($sstatusi{'X2GoWh'} ne $5) or ($sstatusi{'X2GoWw'} ne $6)) {
-#print "REQUESTING UPDATED XPOS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n";
-# appCOM("GET|XPOS|1");
-# }
- $sstatusi{'X2GoWFullScreen'} = $1;
- $sstatusi{'X2GoWVisible'} = $2;
- $sstatusi{'X2GoWax'} = $3;
- $sstatusi{'X2GoWay'} = $4;
- $sstatusi{'X2GoWh'} = $5;
- $sstatusi{'X2GoWw'} = $6;
- overlayStateChange();
- if ($retogglevis eq 1) {
- $window->hide_all();
-
- $window->show_all();
- $window->resize($sstatusi{'FinalPosW'},$sstatusi{'FinalPosH'});
- $window->move($sstatusi{'FinalPosX'},$sstatusi{'FinalPosY'});
- }
-
- } elsif ($saneData =~ /^TERMINATE\|([\w\_]*)\|$/) {
- my $vmessage;
- if ($1 =~ /NO_PAIR1/) {$vmessage = "Client and server dont seem to be on the same page....\n\nIncompatible versions of mTelePlayer on the cliet side...";}
- elsif ($1 =~ /NO_PAIR2/) {$vmessage = "Client and server dont seem to be on the same page....\n\nThe client side do not have mTelePlayer installed!?";}
- elsif ($1 =~ /DUPLICATE/) {$vmessage = "Killed in the name of duplicate termination!";}
-
- appDBugLog($vmessage);doSelfTerminate();
- }
-
- appDBugLog("RMX:$saneData");
-
-
- }}
- } else{
- # close socket as there is no data
- appDBugLog("Closing local socket..");
- $LocalSocket->close;
- $fh->close;
- $fh = undef;
- $sstatusi{'sockState'} = 0;
- Gtk2->main_iteration while Gtk2->events_pending;
- return 0;
-
- }
- }
-
- if ($fh) {# the file handle is still open, so return TRUE possibly have a "connection alive" indicator# print "still connected\n";
- return TRUE;
- } else { # we're finished with this job. start another one, if there are any, and uninstall ourselves.
- appDBugLog("The connection is closed!\n");
- return FALSE;
- }
+ if ($fh) {
+ return TRUE;
+ } else {
+ appDBugLog("The connection is closed!\n");
+ return FALSE;
+ }
}
sub appCOM {
- my $ComData = sanitizer("anumazcsdausdotspipe",$_[0]);
- print $LocalSocket "\nAPPCOM|mteleplayer|$selfSID|$ComData|\n";
-}
-
-
-
-sub overlayStateChange {
- my %newXPos;
-
- if ($sstatusi{'X2GoWFullScreen'} eq 1) {
- $sstatusi{'X2GoWVisible'} = 1;
- $newXPos{'X'} = $sstatusi{'xposX'};
- $newXPos{'Y'} = $sstatusi{'xposY'};
- } else {
- $newXPos{'X'} = $sstatusi{'xposX'} + $sstatusi{'X2GoWax'};
- $newXPos{'Y'} = $sstatusi{'xposY'} + $sstatusi{'X2GoWay'};
- }
-
- $newXPos{'W'} = $sstatusi{'xposW'};
- $newXPos{'H'} = $sstatusi{'xposH'};
-
- if (($sstatusi{'X2GoWVisible'} eq 1) and ($sstatusi{'xposV'} eq 1)) {
- if ($mpState{'noshow'} eq 1) {
- $newXPos{'V'} = 0;
- } else {
- $newXPos{'V'} = 1;
- }
- } else {
- $newXPos{'V'} = 0;
- }
-
-
- if (($newXPos{'X'} ne $sstatusi{'FinalPosX'}) or ($newXPos{'Y'} ne $sstatusi{'FinalPosY'})) {
- $sstatusi{'FinalPosX'} = $newXPos{'X'};
- $sstatusi{'FinalPosY'} = $newXPos{'Y'};
-# print "MOVE: $newXPos{'X'},$newXPos{'Y'}\n";
- $window->move($newXPos{'X'},$newXPos{'Y'});
-#$window->set_position($sstatusi{'xposX'},$sstatusi{'xposY'});
- }
-
- if (($newXPos{'H'} ne $sstatusi{'FinalPosH'}) or ($newXPos{'W'} ne $sstatusi{'FinalPosW'})) {
- $sstatusi{'FinalPosH'} = $newXPos{'H'};
- $sstatusi{'FinalPosW'} = $newXPos{'W'};
- $window->resize($newXPos{'W'},$newXPos{'H'});
- }
-
-
- if (($newXPos{'V'} ne $sstatusi{'FinalPosV'}) or ($mpState{'noshow'} eq 1)) {
- $sstatusi{'FinalPosV'} = $newXPos{'V'};
- if ($newXPos{'V'} eq 1) {
- $window->show_all();
- $window->resize($sstatusi{'FinalPosW'},$sstatusi{'FinalPosH'});
- $window->move($sstatusi{'FinalPosX'},$sstatusi{'FinalPosY'});
- } else {
- $window->hide_all();
- }
- }
-
- return 1;
-
+ my $ComData = sanitizer("anumazcsdausdotspipe",$_[0]);
+ print $LocalSocket "\nAPPCOM|mteleplayer|$selfSID|$ComData|\n";
}
##################################################################3
# MPLAYER STUFF
sub do_mplayer{
- my $gdkwindow1 = $ebox->window;
- my $xid= $gdkwindow1->XWINDOW;
- my $pid = open($mpFH,"-|",$mPlayerPath,'-slave','-input' ,"file=$SlaveFIFO", '-vo','gl','-framedrop','-fs','-wid',$xid,'-volume','0', '-identify','-idle','-nolirc','-cache','4096');
- $TnW{'mplayerIOwatcher'} = Gtk2::Helper->add_watch( $mpFH->fileno, 'in', sub {watch_mplayerOutput( $mpFH,$TnW{'mplayerIOwatcher'} );});
+ my $gdkwindow1 = $ebox->window;
+ my $xid= $gdkwindow1->XWINDOW;
+ my $pid = open($mpFH,"-|",$mPlayerPath,'-slave','-input' ,"file=$SlaveFIFO", '-vo','gl','-framedrop','-fs','-wid',$xid,'-volume','0', '-identify','-idle','-nolirc','-cache','4096');
+ $TnW{'mplayerIOwatcher'} = Gtk2::Helper->add_watch( $mpFH->fileno, 'in', sub {watch_mplayerOutput( $mpFH,$TnW{'mplayerIOwatcher'} );});
}
sub inList2Play {
- appDBugLog("Do stuff at end of file or at next or prev button press");
- mpCMD("pausing seek 0 2"); # Currently we're only supporting one file so just seek to 0 and pause....
- return 1;
+ appDBugLog("Do stuff at end of file or at next or prev button press");
+ mpCMD("pausing seek 0 2"); # Currently we're only supporting one file so just seek to 0 and pause....
+ return 1;
}
sub doPauseStuff {
- if ($_[0] eq "pause") {
- unless ($mpState{'paused'} eq 1) { appDBugLog(">>>> PAUSED <<<<");
- $mpState{'paused'} = 1;
- appCOM("PAUSED|1|");
- }
- } else {
- if ($mpState{'paused'} eq 1) { appDBugLog("UN-PAUSED");
- $mpState{'paused'} = 0;
- appCOM("PAUSED|0|");
- }
- }
- return 1;
+ if ($_[0] eq "pause") {
+ unless ($mpState{'paused'} eq 1) {
+ appDBugLog(">>>> PAUSED <<<<");
+ $mpState{'paused'} = 1;
+ appCOM("PAUSED|1|");
+ }
+ } else {
+ if ($mpState{'paused'} eq 1) {
+ appDBugLog("UN-PAUSED");
+ $mpState{'paused'} = 0;
+ appCOM("PAUSED|0|");
+ }
+ }
+ return 1;
}
sub doReportTimePos {
- my $currentTime = $_[0];
- my $lengthTime = $_[1];
- $currentTime =~ s/\.[\d]*$//g;$lengthTime =~ s/\.[\d]*$//g;
-# print "rtp2: $currentTime/$lengthTime\n\n";
- appCOM("UPDATE|TIME|$currentTime|$lengthTime");
+ my $currentTime = $_[0];
+ my $lengthTime = $_[1];
+ $currentTime =~ s/\.[\d]*$//g;$lengthTime =~ s/\.[\d]*$//g;
+ appCOM("UPDATE|TIME|$currentTime|$lengthTime");
}
-
sub watch_mplayerOutput {
- my ($fh,$tag) = @_;
- my $buffer;
- if ( not sysread($fh, $buffer, 4096) ) {
- Gtk2::Helper->remove_watch ($tag) or die "couldn't remove watcher";
- close($fh);
- return 1;
- }
- foreach my $line (split(/\n/,$buffer)) {
- $line =~ s/[\n\r\t]//g;
-###############
-# Trigers...
-# if ($line =~ /^Starting playback\.\.\./) {# mpCMD("get_file_name");
-# if ($mpState{'FakeFS'} ne 1) {mpCMD("osd 0");}
-# mpCMD("get_time_length");
-# mpCMD("volume $mpState{'volume'} 1");
-# if ($mpState{'notInitial'} ne 1) {
-# $mpState{'notInitial'} = 1;
-# appCOM("GIVEMEFIRSTMEDIATOINIT");
-# }
-# }
-# Triggers
-###############
-# ANSWERS
- if ($line =~ /^ID/) {
- #############################
- # GET MEDIA INFO
- if ($mediaINFO{'MEDIAINFOSET'} ne 1) {
- if ($line =~ /^ID_VIDEO_FORMAT\=(.*)$/) {
- $mediaINFO{'VIDEOFORMAT'} = $1;
- } elsif ($line =~ /^ID_AUDIO_FORMAT\=(.*)$/) {
- $mediaINFO{'AUDIOFORMAT'} = $1;
- } elsif ($line =~ /^ID_LENGTH\=([\.\d]*)$/) {
- $mediaINFO{'LENGHT'} = $1;
- } elsif ($line =~ /^ID_SEEKABLE\=1$/) {
- $mediaINFO{'SEEKABLE'} = 1;
- } elsif ($line =~ /^ID_FILENAME\=(.*)$/) {
- $mediaINFO{'FILENAME'} = $1;
- }
- }
- # GET MEDIA INFO
- #############################
- } elsif ($line =~ /^Playing(.*)$/) {
- appDBugLog("SET X:$1:X");
- } elsif (($line =~ /======================================/) and ($mediaINFO{'MEDIAINFOSET'} ne 1)) {
- appDBugLog("SET STATUS!");
- setMediaInfo(1);# Trigger setMediaInfo DONE...
- } elsif ($line =~ /^ANS\_FILENAME\=\'(.*)\'$/) {
- $mpState{'mediaFileName'} = $1;# print "File: $1\n";
- } elsif ($line =~ /^ANS\_LENGTH\=([\d\.]*)$/) {
-# $mpState{'mediaLength'} = $1;
- } elsif ($line =~ /^Cache fill:([\ \d\.\%]*)\((\d*) bytes\)/) {
- appDBugLog("Cache fill! [$1] [$2]");
- my $cacheP = $1;$cacheP =~ s/\ //g;
- my $cacheB = $2;$cacheB =~ s/\D//g;
- appCOM("CACHING|$cacheP|$cacheB|");
- } elsif ($line =~ /===== PAUSE =====/) {
- doPauseStuff("pause");
- } elsif (($line =~ /^A:/) or ($line =~ /^V:/)) {
- doPauseStuff("unpause");
- if ($line =~ /^A:[\ \.\d]*V:([\ \.\d]*)/) {$mpState{'mediaPos'} = $1;}
- elsif ($line =~ /^A:([\ \.\d]*)/) {$mpState{'mediaPos'} = $1;}
- elsif ($line =~ /^V:[\ ]*([\.\d]*[\ ]*)/) {$mpState{'mediaPos'} = $1;}
- $mpState{'mediaPos'}++;$mpState{'mediaPos'}--;
- my ($newSecond,undef) = split(/\./,$mpState{'mediaPos'});
- if ($newSecond ne $mpState{'prevSecond'}) {
- $mpState{'prevSecond'} = $newSecond;
- doReportTimePos($newSecond,$mpState{'mediaLength'});
- appDBugLog("MP: :$mpState{'mediaLength'}: :$mpState{'mediaPos'}:");
- if ($mpState{'mediaLength'} > 0) {
- if (($mpState{'mediaLength'}-1) <= $mpState{'mediaPos'}) {
- appDBugLog("LOADPOINT 1! $mpState{'mediaLength'} $mpState{'mediaPos'}");
- mpCMD("pausing frame_step");
- inList2Play("next");
- }
- }
- }
- } elsif ($line =~ /^Failed to open LIRC support/) {#DO NOTHING!!
- } elsif (($line =~ /^Failed\ to\ open.*/) or ($line =~ /^File\ not\ found.*/)) {
- appDBugLog("NOT A FILE!\n $line");
-# Do something HERE?
- } elsif ($line =~ /^Failed\ to\ recognize\ file\ format.*/) {
- appDBugLog("NOT A MEDIA FILE!\n $line\n");
-# DO SOMETHING HERE?
- } else {
- appDBugLog("UNCUAGHT:\n $line\n");
- }
-# ANSWERS
-###############
- }
- return 1;
+ my ($fh,$tag) = @_;
+ my $buffer;
+ if ( not sysread($fh, $buffer, 4096) ) {
+ Gtk2::Helper->remove_watch ($tag) or die "couldn't remove watcher";
+ close($fh);
+ return 1;
+ }
+ foreach my $line (split(/\n/,$buffer)) {
+ $line =~ s/[\n\r\t]//g;
+ ###############
+ # ANSWERS
+ if ($line =~ /^ID/) {
+ #############################
+ # GET MEDIA INFO
+ if ($mediaINFO{'MEDIAINFOSET'} ne 1) {
+ if ($line =~ /^ID_VIDEO_FORMAT\=(.*)$/) {
+ $mediaINFO{'VIDEOFORMAT'} = $1;
+ } elsif ($line =~ /^ID_AUDIO_FORMAT\=(.*)$/) {
+ $mediaINFO{'AUDIOFORMAT'} = $1;
+ } elsif ($line =~ /^ID_LENGTH\=([\.\d]*)$/) {
+ $mediaINFO{'LENGHT'} = $1;
+ } elsif ($line =~ /^ID_SEEKABLE\=1$/) {
+ $mediaINFO{'SEEKABLE'} = 1;
+ } elsif ($line =~ /^ID_FILENAME\=(.*)$/) {
+ $mediaINFO{'FILENAME'} = $1;
+ }
+ }
+ # GET MEDIA INFO
+ #############################
+ } elsif ($line =~ /^Playing(.*)$/) {
+ appDBugLog("Playing: $1");
+ } elsif (($line =~ /======================================/) and ($mediaINFO{'MEDIAINFOSET'} ne 1)) {
+ appDBugLog("SET MEDIAINFO TRIG 1!");
+ setMediaInfo(1);# Trigger setMediaInfo DONE...
+ } elsif ($line =~ /^ANS\_FILENAME\=\'(.*)\'$/) {
+ $mpState{'mediaFileName'} = $1;
+ } elsif ($line =~ /^Cache fill:([\ \d\.\%]*)\((\d*) bytes\)/) {
+ appDBugLog("Cache fill! [$1] [$2]");
+ my $cacheP = $1;$cacheP =~ s/\ //g;
+ my $cacheB = $2;$cacheB =~ s/\D//g;
+ appCOM("CACHING|$cacheP|$cacheB|");
+ } elsif ($line =~ /===== PAUSE =====/) {
+ doPauseStuff("pause");
+ } elsif (($line =~ /^A:/) or ($line =~ /^V:/)) {
+ doPauseStuff("unpause");
+ if ($line =~ /^A:[\ \.\d]*V:([\ \.\d]*)/) {$mpState{'mediaPos'} = $1;}
+ elsif ($line =~ /^A:([\ \.\d]*)/) {$mpState{'mediaPos'} = $1;}
+ elsif ($line =~ /^V:[\ ]*([\.\d]*[\ ]*)/) {$mpState{'mediaPos'} = $1;}
+ $mpState{'mediaPos'}++;$mpState{'mediaPos'}--;
+ my ($newSecond,undef) = split(/\./,$mpState{'mediaPos'});
+ if ($newSecond ne $mpState{'prevSecond'}) {
+ $mpState{'prevSecond'} = $newSecond;
+ doReportTimePos($newSecond,$mpState{'mediaLength'});
+ appDBugLog("MP: :$mpState{'mediaLength'}: :$mpState{'mediaPos'}:");
+ if ($mpState{'mediaLength'} > 0) {
+ if (($mpState{'mediaLength'}-1) <= $mpState{'mediaPos'}) {
+ appDBugLog("LOADPOINT 1! $mpState{'mediaLength'} $mpState{'mediaPos'}");
+ mpCMD("pausing frame_step");
+ inList2Play("next");
+ }
+ }
+ }
+ } elsif ($line =~ /^Failed to open LIRC support/) {#DO NOTHING!!
+ } elsif (($line =~ /^Failed\ to\ open.*/) or ($line =~ /^File\ not\ found.*/)) {
+ appDBugLog("NOT A FILE!\n $line");
+ # Do something HERE?
+ } elsif ($line =~ /^Failed\ to\ recognize\ file\ format.*/) {
+ appDBugLog("NOT A MEDIA FILE!\n $line\n");
+ # DO SOMETHING HERE?
+ } else {
+ appDBugLog("UNCUAGHT:\n $line\n");
+ }
+ # ANSWERS
+ ###############
+ }
+ return 1;
}
-
-
sub mpCMD {
- open(CTRL,">$SlaveFIFO");print CTRL "$_[0]\n";close(CTRL);
+ open(CTRL,">$SlaveFIFO");print CTRL "$_[0]\n";close(CTRL);
}
-
sub setMediaInfo {
- appDBugLog("SET setMediaINFO :$_[0]:");
- if ($_[0] eq 0) {
- $mediaINFO{'AUDIOFORMAT'} = 0;
- $mediaINFO{'VIDEOFORMAT'} = 0;
- $mediaINFO{'LENGHT'} = 0;
- $mediaINFO{'SEEKABLE'} = 0;
- $mediaINFO{'FILENAME'} = 0;
- $mediaINFO{'ONLYAUDIO'} = 0;
- $mediaINFO{'MEDIAINFOSET'} = 0;
- } elsif ($_[0] eq 1) {
- appDBugLog("SET setMediaINFO:");
- foreach my $key (keys %mediaINFO) {
- appDBugLog("SET\t$key $mediaINFO{$key}");
- }
+ appDBugLog("SET setMediaINFO :$_[0]:");
+ if ($_[0] eq 0) {
+
+ $mediaINFO{'AUDIOFORMAT'} = 0;
+ $mediaINFO{'VIDEOFORMAT'} = 0;
+ $mediaINFO{'LENGHT'} = 0;
+ $mediaINFO{'SEEKABLE'} = 0;
+ $mediaINFO{'FILENAME'} = 0;
+ $mediaINFO{'ONLYAUDIO'} = 0;
+ $mediaINFO{'MEDIAINFOSET'} = 0;
+
+ } elsif ($_[0] eq 1) {
+
+ appDBugLog("SET setMediaINFO:");
+ foreach my $key (keys %mediaINFO) {
+ appDBugLog("SET\t$key $mediaINFO{$key}");
+ }
- if ($mediaINFO{'VIDEOFORMAT'} eq 0) {
- $mediaINFO{'ONLYAUDIO'} = 1;
- appCOM("ONLYAUDIO|1|");
- $mpState{'noshow'} = 1;
- } else {
- appCOM("ONLYAUDIO|0|");
- $mpState{'noshow'} = 0;
- }
- $mpState{'mediaLength'} = $mediaINFO{'LENGHT'};
- doReportTimePos("0.00",$mpState{'mediaLength'});
-
- $mediaINFO{'MEDIAINFOSET'} = 1;
-
- overlayStateChange();
- } elsif ((uc($_[0]) =~ /^([A-Z]{3,})$/) and (length($_[1]) > 0)) {
- $mediaINFO{$1} = $_[1];
- }
+ if ($mediaINFO{'VIDEOFORMAT'} eq 0) {
+ $mediaINFO{'ONLYAUDIO'} = 1;
+ appCOM("ONLYAUDIO|1|");
+ doOverlayMagic('onlyaudio',1);
+ } else {
+ appCOM("ONLYAUDIO|0|");
+ doOverlayMagic('onlyaudio',0);
+ }
+
+ $mpState{'mediaLength'} = $mediaINFO{'LENGHT'};
+ doReportTimePos("0.00",$mpState{'mediaLength'});
+ $mediaINFO{'MEDIAINFOSET'} = 1;
+
+ } elsif ((uc($_[0]) =~ /^([A-Z]{3,})$/) and (length($_[1]) > 0)) {
+ $mediaINFO{$1} = $_[1];
+ }
+
}
# MPLAYER STUFF
######################################################################
-sub shouldWeBeVisible {
- my $visible = 1;
- if ($mpState{'noshow'} eq 1) {$visible = 0;}
-
- if ($visible eq 1) {
- return 1;
- } else {
- return 0;
- }
+# OVERLAY MAGIC
+sub doOverlayMagic {
+ my $doWHAT = lc($_[0]);
+ my $changeVis = 0;
+ my $reTogVis = 0;
+ my $changePos = 0;
+ if ($doWHAT eq "init") {
+ $olMagic{'CsSesWin_FS'} = 0;
+ $olMagic{'CsSesWin_Vis'} = 0;
+ $olMagic{'CsSesWin_aX'} = 0;
+ $olMagic{'CsSesWin_aY'} = 0;
+ $olMagic{'CsSesWin_Hgt'} = 0;
+ $olMagic{'CsSesWin_Wdt'} = 0;
+
+ $olMagic{'SsAppWin_X'} = 0;
+ $olMagic{'SsAppWin_Y'} = 0;
+ $olMagic{'SsAppWin_Hgt'} = 0;
+ $olMagic{'SsAppWin_Wdt'} = 0;
+ $olMagic{'SsAppWin_Vis'} = 0;
+
+ $olMagic{'overlay_X'} = 0;
+ $olMagic{'overlay_Y'} = 0;
+ $olMagic{'onlyaudio'} = 1;# Abusing this again...
+ $olMagic{'visible'} = 0;
+ $window->hide_all;
+ } elsif ($doWHAT eq "dodgemouse") {
+
+ if ($_[1] eq 1) {
+ $olMagic{'dodgeMouse'} = 1;
+ appDBugLog("Dodging MOUSE");
+ } else {
+ $olMagic{'dodgeMouse'} = 0;
+ appDBugLog("UnDodging MOUSE");
+ }
+
+ } elsif ($doWHAT eq "csseswin") {
+
+ if ($olMagic{'CsSesWin_FS'} ne $_[1]) {
+ if ($_[1] eq 1) {
+ $olMagic{'CsSesWin_FS'} = 1;
+ $reTogVis = 1;
+ } elsif ($_[1] eq 0) {
+ $olMagic{'CsSesWin_FS'} = 0;
+ $reTogVis = 1;
+ } else {
+ appDBugLog("ERROR: Got wrong value '$_[1]' for CsSesWin_FS!");
+ }
+ }
+
+ if ($olMagic{'CsSesWin_Vis'} ne $_[2]) {
+ if ($_[2] eq 1) {
+ $olMagic{'CsSesWin_Vis'} = 1;
+ } elsif ($_[2] eq 0) {
+ $olMagic{'CsSesWin_Vis'} = 0;
+ } else {
+ appDBugLog("ERROR: Got wrong value '$_[2]' for CsSesWin_Vis!");
+ }
+ }
+
+ if (($olMagic{'CsSesWin_aX'} ne $_[3]) or ($olMagic{'CsSesWin_aY'} ne $_[4])) {
+ $olMagic{'CsSesWin_aX'} = $_[3];
+ $olMagic{'CsSesWin_aY'} = $_[4];
+ $changePos = 1;
+ }
+
+ if (($olMagic{'CsSesWin_Hgt'} ne $_[5]) or ($olMagic{'CsSesWin_Wdt'} ne $_[6])) {
+ $olMagic{'CsSesWin_Hgt'} = $_[5];
+ $olMagic{'CsSesWin_Wdt'} = $_[6];
+ }
+
+ } elsif ($doWHAT eq "ssappwin") {
+
+ if (($olMagic{'SsAppWin_X'} ne $_[1]) or ($olMagic{'SsAppWin_Y'} ne $_[2])) {
+ $olMagic{'SsAppWin_X'} = $_[1];
+ $olMagic{'SsAppWin_Y'} = $_[2];
+ $changePos = 1;
+ }
+
+ if (($olMagic{'SsAppWin_Hgt'} ne $_[3]) or ($olMagic{'SsAppWin_Wdt'} ne $_[4])) {
+ $olMagic{'SsAppWin_Hgt'} = $_[3];
+ $olMagic{'SsAppWin_Wdt'} = $_[4];
+ $changePos = 1;
+ }
+
+ if ($olMagic{'SsAppWin_Vis'} ne $_[5]) {
+ if ($_[5] eq 1) {
+ $olMagic{'SsAppWin_Vis'} = 1;
+ } elsif ($_[5] eq 0) {
+ $olMagic{'SsAppWin_Vis'} = 0;
+ } else {
+ appDBugLog("ERROR: Got wrong value '$_[5]' for SsAppWin_Vis!");
+ }
+ }
+ } elsif ($doWHAT eq "onlyaudio") {
+ if ($_[1] eq 1) {
+ $olMagic{'onlyaudio'} = 1;
+ } else {
+ $olMagic{'onlyaudio'} = 0;
+ }
+ }
+
+
+
+ if (($olMagic{'dodgeMouse'} ne 1) and ($olMagic{'onlyaudio'} ne 1)) {
+
+ if (($olMagic{'SsAppWin_Vis'} eq 1) and ($olMagic{'CsSesWin_Vis'} eq 1)) {
+ if ($olMagic{'visible'} eq 0) {
+ $olMagic{'visible'} = 1;
+ $changeVis = 1;
+ }
+ } else {
+ if ($olMagic{'visible'} eq 1) {
+ $olMagic{'visible'} = 0;
+ $changeVis = 1;
+ }
+ }
+
+ } else {
+
+ if ($olMagic{'visible'} eq 1) {
+ $olMagic{'visible'} = 0;
+ $changeVis = 1;
+ }
+
+ }
+
+
+
+
+ if (($changeVis eq 1) or ($reTogVis eq 1)) {
+ if ($olMagic{'visible'} eq 0) {
+ if ($window->visible) {
+ $window->hide_all;
+ }
+ } else {
+ if ($reTogVis eq 1) {
+ if ($window->visible) {
+ $window->hide_all;
+ }
+ }
+ unless ($window->visible) {
+ $window->move($olMagic{'overlay_X'},$olMagic{'overlay_Y'});
+ $window->resize($olMagic{'SsAppWin_Wdt'},$olMagic{'SsAppWin_Hgt'});
+ $window->show_all;
+ $changePos = 1;
+ }
+ }
+ }
+
+ if ($changePos eq 1) {
+ if ($olMagic{'visible'} eq 1) {
+ $olMagic{'overlay_X'} = $olMagic{'CsSesWin_aX'}+$olMagic{'SsAppWin_X'};
+ $olMagic{'overlay_Y'} = $olMagic{'CsSesWin_aY'}+$olMagic{'SsAppWin_Y'};
+ $window->move($olMagic{'overlay_X'},$olMagic{'overlay_Y'});
+ $window->resize($olMagic{'SsAppWin_Wdt'},$olMagic{'SsAppWin_Hgt'});
+ }
+ }
+
+
}
+# OVERLAY MAGIC
+######################################################################
+# Window Event stuff.... just in case we'd want to add more stuff...
+
sub windowEvent {
- my ($mw, $event) = @_;
-# print "E:",$event->type,":E\n";
-# print "S:",$event->state,":S\n";
-#if ($event->type eq "motion-notify") {
-# print "S:",$event->state,":S\n";
- if ($event->state =~ /button\d\-mask/) {
-# print "BUTTON DOWN LA!\n";
- $sstatusi{'dodgeMouse'} = time();
- $window->hide_all();
- }
- # }
+ my ($mw, $event) = @_;
+ if ($event->state =~ /button\d\-mask/) {
+ doOverlayMagic('dodgemouse',1);
+ }
}
+
#################################################################################################################################
# This sub, supposedly try to do a clean termination of the application...
sub doSelfTerminate {
- appDBugLog("Self Terminating............\n");
- if ($TnW{'timeoutRound'}) {
- Glib::Source->remove($TnW{'timeoutRound'});
- }
- $runSTATE = "T";
- mpCMD("quit");
- usleep(100000);
- open(PS,"/bin/ps x --no-headers -o %u,%p,%n,%a|");
- while (my $psLine = <PS>) {
- if (length($psLine) > 0) {
- my ($user,$pid,$nice,$cmd) = split(/\,/,$psLine);
- if ($cmd =~ /$SlaveFIFO/) {
- appDBugLog("Trying to kill PID: $pid\n");
- kill("KILL",$pid);
- }
- }
- }
- close(PS);
-
- if (defined $LocalSocket){
- $LocalSocket->close;
- $LocalSocket = undef;
- }
-
- Gtk2->main_quit;
- exit;
- return FALSE;
+ $window->hide_all;
+ $runSTATE = "T";
+ appDBugLog("Self Terminating............\n");
+ mpCMD("quit");
+ usleep(100000);
+
+ if ($TnW{'timeoutRound'}) {
+ Glib::Source->remove($TnW{'timeoutRound'});
+ }
+
+ open(PS,"/bin/ps x --no-headers -o %u,%p,%n,%a|");
+ while (my $psLine = <PS>) {
+ if (length($psLine) > 0) {
+ my ($user,$pid,$nice,$cmd) = split(/\,/,$psLine);
+ if ($cmd =~ /$SlaveFIFO/) {
+ my $cleanPID = sanitizer("num",$pid);
+ appDBugLog("Trying to kill PID: $cleanPID\n");
+ kill("KILL",$cleanPID);
+ }
+ }
+ }
+ close(PS);
+
+ if (defined $LocalSocket){
+ $LocalSocket->close;
+ $LocalSocket = undef;
+ }
+
+ Gtk2->main_quit;
+ exit;
+ return FALSE;
+
}
# And this should be the very end of everything!?
-#################################################################################################################################
-############################################################################################################################################
##############################################################################################################################################
--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/mteleplayer.git
More information about the x2go-commits
mailing list