summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/pygui/application.py
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip-apps/src/pygui/application.py')
-rw-r--r--pjsip-apps/src/pygui/application.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/pjsip-apps/src/pygui/application.py b/pjsip-apps/src/pygui/application.py
index 0dd5fa50..b171f386 100644
--- a/pjsip-apps/src/pygui/application.py
+++ b/pjsip-apps/src/pygui/application.py
@@ -39,12 +39,18 @@ import settings
import os
import traceback
+# You may try to enable pjsua worker thread by setting USE_THREADS below to True *and*
+# recreate the swig module with adding -threads option to swig (uncomment USE_THREADS
+# in swig/python/Makefile). In my experiment this would crash Python as reported in:
+# http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2014-March/017223.html
+USE_THREADS = False
class Application(ttk.Frame):
"""
The Application main frame.
"""
def __init__(self):
+ global USE_THREADS
ttk.Frame.__init__(self, name='application', width=300, height=500)
self.pack(expand='yes', fill='both')
self.master.title('pjsua2 Demo')
@@ -73,8 +79,12 @@ class Application(ttk.Frame):
# Default config
self.appConfig = settings.AppConfig()
- self.appConfig.epConfig.uaConfig.threadCnt = 0;
- self.appConfig.epConfig.uaConfig.mainThreadOnly = True
+ if USE_THREADS:
+ self.appConfig.epConfig.uaConfig.threadCnt = 1
+ self.appConfig.epConfig.uaConfig.mainThreadOnly = False
+ else:
+ self.appConfig.epConfig.uaConfig.threadCnt = 0
+ self.appConfig.epConfig.uaConfig.mainThreadOnly = True
self.appConfig.epConfig.logConfig.writer = self.logger
self.appConfig.epConfig.logConfig.filename = "pygui.log"
self.appConfig.epConfig.logConfig.fileFlags = pj.PJ_O_APPEND
@@ -101,11 +111,18 @@ class Application(ttk.Frame):
self.appConfig.saveFile(filename)
def start(self, cfg_file='pygui.js'):
+ global USE_THREADS
# Load config
if cfg_file and os.path.exists(cfg_file):
self.appConfig.loadFile(cfg_file)
- self.appConfig.epConfig.uaConfig.threadCnt = 0;
+ if USE_THREADS:
+ self.appConfig.epConfig.uaConfig.threadCnt = 1
+ self.appConfig.epConfig.uaConfig.mainThreadOnly = False
+ else:
+ self.appConfig.epConfig.uaConfig.threadCnt = 0
+ self.appConfig.epConfig.uaConfig.mainThreadOnly = True
+ self.appConfig.epConfig.uaConfig.threadCnt = 0
self.appConfig.epConfig.uaConfig.mainThreadOnly = True
self.appConfig.epConfig.logConfig.writer = self.logger
self.appConfig.epConfig.logConfig.level = 5
@@ -136,7 +153,8 @@ class Application(ttk.Frame):
self.ep.libStart()
# Start polling
- self._onTimer()
+ if not USE_THREADS:
+ self._onTimer()
def updateAccount(self, acc):
if acc.deleting: