summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2014-03-19 21:20:17 +0000
committerBenny Prijono <bennylp@teluu.com>2014-03-19 21:20:17 +0000
commit501151b018486c4f0659b323ac26d8874746cb65 (patch)
tree3f1a6b31442ce668aa5c58e3ae26b8f8dc4fa863 /pjsip-apps
parentc397c4c9fb35fe4f7dead038fc8764789fdf2ef1 (diff)
Misc (re #1751): added experimental option to enable/use worker thread for Python. To enable worker thread:
- uncomment USE_THREADS in pjsip-apps/src/swig/python/Makefile - change USE_THREADS to True in pjsip-apps/src/pygui/application.py git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4798 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/pygui/application.py26
-rw-r--r--pjsip-apps/src/swig/python/Makefile5
2 files changed, 25 insertions, 6 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:
diff --git a/pjsip-apps/src/swig/python/Makefile b/pjsip-apps/src/swig/python/Makefile
index 651ea3f7..9417a207 100644
--- a/pjsip-apps/src/swig/python/Makefile
+++ b/pjsip-apps/src/swig/python/Makefile
@@ -8,7 +8,8 @@ else
GCC_EXE=
endif
-SWIG_FLAGS += -w312
+#USE_THREADS = -threads -DSWIG_NO_EXPORT_ITERATOR_METHODS
+SWIG_FLAGS += -w312 $(USE_THREADS)
.PHONY: all install uninstall
@@ -22,7 +23,7 @@ gcc.exe: cc_mingw.c
cp gcc.exe g++.exe
pjsua2_wrap.cpp: ../pjsua2.i ../symbols.i Makefile $(SRCS)
- swig $(SWIG_FLAGS) -python -o pjsua2_wrap.cpp ../pjsua2.i
+ swig $(SWIG_FLAGS) -python -o pjsua2_wrap.cpp ../pjsua2.i
clean distclean realclean:
rm -rf $(PYTHON_SO) pjsua2_wrap.cpp pjsua2_wrap.h pjsua2.py build *.pyc