Changeset 4798


Ignore:
Timestamp:
Mar 19, 2014 9:20:17 PM (7 years ago)
Author:
bennylp
Message:

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
Location:
pjproject/trunk/pjsip-apps/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/pygui/application.py

    r4704 r4798  
    4040import traceback 
    4141 
     42# You may try to enable pjsua worker thread by setting USE_THREADS below to True *and* 
     43# recreate the swig module with adding -threads option to swig (uncomment USE_THREADS  
     44# in swig/python/Makefile). In my experiment this would crash Python as reported in: 
     45# http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2014-March/017223.html 
     46USE_THREADS = False 
    4247         
    4348class Application(ttk.Frame): 
     
    4651        """ 
    4752        def __init__(self): 
     53                global USE_THREADS 
    4854                ttk.Frame.__init__(self, name='application', width=300, height=500) 
    4955                self.pack(expand='yes', fill='both') 
     
    7480                # Default config 
    7581                self.appConfig = settings.AppConfig() 
    76                 self.appConfig.epConfig.uaConfig.threadCnt = 0; 
    77                 self.appConfig.epConfig.uaConfig.mainThreadOnly = True 
     82                if USE_THREADS: 
     83                        self.appConfig.epConfig.uaConfig.threadCnt = 1 
     84                        self.appConfig.epConfig.uaConfig.mainThreadOnly = False 
     85                else: 
     86                        self.appConfig.epConfig.uaConfig.threadCnt = 0 
     87                        self.appConfig.epConfig.uaConfig.mainThreadOnly = True 
    7888                self.appConfig.epConfig.logConfig.writer = self.logger 
    7989                self.appConfig.epConfig.logConfig.filename = "pygui.log" 
     
    102112         
    103113        def start(self, cfg_file='pygui.js'): 
     114                global USE_THREADS 
    104115                # Load config 
    105116                if cfg_file and os.path.exists(cfg_file): 
    106117                        self.appConfig.loadFile(cfg_file) 
    107118 
    108                 self.appConfig.epConfig.uaConfig.threadCnt = 0; 
     119                if USE_THREADS: 
     120                        self.appConfig.epConfig.uaConfig.threadCnt = 1 
     121                        self.appConfig.epConfig.uaConfig.mainThreadOnly = False 
     122                else: 
     123                        self.appConfig.epConfig.uaConfig.threadCnt = 0 
     124                        self.appConfig.epConfig.uaConfig.mainThreadOnly = True 
     125                self.appConfig.epConfig.uaConfig.threadCnt = 0 
    109126                self.appConfig.epConfig.uaConfig.mainThreadOnly = True 
    110127                self.appConfig.epConfig.logConfig.writer = self.logger 
     
    137154                 
    138155                # Start polling 
    139                 self._onTimer() 
     156                if not USE_THREADS: 
     157                        self._onTimer() 
    140158 
    141159        def updateAccount(self, acc): 
  • pjproject/trunk/pjsip-apps/src/swig/python/Makefile

    r4744 r4798  
    99endif 
    1010 
    11 SWIG_FLAGS += -w312 
     11#USE_THREADS = -threads -DSWIG_NO_EXPORT_ITERATOR_METHODS 
     12SWIG_FLAGS += -w312 $(USE_THREADS) 
    1213 
    1314.PHONY: all install uninstall 
     
    2324 
    2425pjsua2_wrap.cpp: ../pjsua2.i ../symbols.i Makefile $(SRCS) 
    25         swig $(SWIG_FLAGS) -python  -o pjsua2_wrap.cpp ../pjsua2.i 
     26        swig $(SWIG_FLAGS) -python -o pjsua2_wrap.cpp ../pjsua2.i 
    2627 
    2728clean distclean realclean: 
Note: See TracChangeset for help on using the changeset viewer.