[X2Go-Commits] pyhoca-gui.git - build-main (branch) updated: 0.4.0.8-19-g9394bb3
X2Go dev team
git-admin at x2go.org
Wed Jan 8 15:22:04 CET 2014
The branch, build-main has been updated
via 9394bb354a9dafb685a3f0caef642e011f463726 (commit)
from b9235e33ca5e7429607fe0b66ad395a444940147 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
debian/changelog | 1 +
pyhoca-gui | 62 ++++++++++++++++++++++++++++++++++++++++--------------
2 files changed, 47 insertions(+), 16 deletions(-)
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 9a35bd8..3727545 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -18,6 +18,7 @@ pyhoca-gui (0.4.0.9-0~x2go1) UNRELEASED; urgency=low
- Allow for full path taskbar icon names, resolve tilde char in icon file
path.
- Resolve tilde char in file path of the about image.
+ - Allow multiple PyHoca-GUI instances for the same user, one per $DISPLAY.
* /debian/copyright:
+ Update file. Add entry for file icon2exe.py.
* /debian/control:
diff --git a/pyhoca-gui b/pyhoca-gui
index 34f08b4..1697f86 100755
--- a/pyhoca-gui
+++ b/pyhoca-gui
@@ -24,6 +24,7 @@ modules ={}
import sys
import os
import re
+import shutil
PROG_NAME = os.path.basename(sys.argv[0]).replace('.exe', '')
PROG_PID = os.getpid()
@@ -138,25 +139,40 @@ VERSION: %s
def check_running():
if _X2GOCLIENT_OS in ('Linux', 'Mac'):
+
p = subprocess.Popen(['ps', '-U', _CURRENT_LOCAL_USER, '-u', _CURRENT_LOCAL_USER], stdout=subprocess.PIPE)
psA_out = p.communicate()
if psA_out[0].count(PROG_NAME) <= 1:
- return False
- else:
- processes = psA_out[0].strip().strip('\n').strip().split('\n')
- sep = re.compile('[\s]+')
- processes_of_myself = [ sep.split(row) for row in processes if PROG_NAME in row and not str(PROG_PID) in row ]
- print
- print 'FIXME: We found at least one other PyHoca-GUI instance for this user,'
- print 'but cannot (yet) tell if it/they is/are running on the same $DISPLAY'
- print 'or some other $DISPLAY. PyHoca-GUI only allows one instance per $DISPLAY.'
- print
- print 'These are the other instances of PyHoca-GUI found for this user:'
- for line in processes_of_myself:
- print " ".join(line)
- # FIXME: add $DISPLAY check here, only return False if no PyHoca-GUI instance is running on this $DISPLAY
- # return False
- return True
+
+ if os.path.isdir(os.path.expanduser("~/.x2go/pyhoca-gui/")):
+ shutil.rmtree(os.path.expanduser("~/.x2go/pyhoca-gui/"))
+
+ my_pid = str(os.getpid())
+ if not os.path.exists(os.path.expanduser("~/.x2go/pyhoca-gui/")):
+ os.makedirs(os.path.expanduser("~/.x2go/pyhoca-gui/"))
+ my_pidfile = os.path.expanduser("~/.x2go/pyhoca-gui/display.{pid}".format(pid=my_pid))
+
+ my_display = os.environ['DISPLAY']
+ open(my_pidfile, 'w').write(my_display)
+
+ already_running_for_this_display = False
+ for pidfile in os.listdir(os.path.expanduser("~/.x2go/pyhoca-gui/")):
+
+ # this is our own pid file...
+ if my_pidfile.endswith(pidfile):
+ continue
+
+ display = open(os.path.expanduser("~/.x2go/pyhoca-gui/") + pidfile, 'r').read()
+
+ if display.split('.')[0] == my_display.split('.')[0]:
+ other_pid = pidfile.split('.')[1]
+ print
+ print('One instance of PyHoca-GUI (PID: {other_pid}) is already running for this $DISPLAY {display}'.format(other_pid=other_pid, display=my_display))
+
+ return True
+
+ return False
+
elif _X2GOCLIENT_OS == 'Windows':
import wmi
w = wmi.WMI()
@@ -169,6 +185,8 @@ def check_running():
def version():
# print version text and exit
sys.stderr.write ("%s\n" % VERSION_TEXT)
+ remove_pidfile()
+
sys.exit(0)
@@ -180,6 +198,8 @@ def runtime_error(m, parser=None, exitcode=-1):
if parser is not None:
parser.print_usage()
sys.stderr.write ("%s: error: %s\n" % (PROG_NAME, m))
+
+ remove_pidfile()
sys.exit(exitcode)
@@ -272,6 +292,14 @@ portable_options = [
]
+def remove_pidfile():
+
+ if _X2GOCLIENT_OS in ('Linux', 'Mac'):
+ my_pid = str(os.getpid())
+ if os.path.exists(os.path.expanduser("~/.x2go/pyhoca-gui/display.{pid}".format(pid=my_pid))):
+ os.remove(os.path.expanduser("~/.x2go/pyhoca-gui/display.{pid}".format(pid=my_pid)))
+
+
def parseargs():
global DEBUG
@@ -389,6 +417,8 @@ def main():
thisPyHocaGUI.WakeUpIdle()
thisPyHocaGUI.ExitMainLoop()
+ remove_pidfile()
+
if __name__ == '__main__':
main()
hooks/post-receive
--
pyhoca-gui.git (Python X2Go Client (wxPython GUI))
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "pyhoca-gui.git" (Python X2Go Client (wxPython GUI)).
More information about the x2go-commits
mailing list