[Python-checkins] CVS: python/dist/src/Modules _cursesmodule.c,2.24,2.25

A.M. Kuchling python-dev@python.org
Thu, 22 Jun 2000 18:36:24 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory slayer.i.sourceforge.net:/tmp/cvs-serv21471

Modified Files:
	_cursesmodule.c 
Log Message:
Release the global interpreter lock around the most important
functions that might block or pause


Index: _cursesmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_cursesmodule.c,v
retrieving revision 2.24
retrieving revision 2.25
diff -C2 -r2.24 -r2.25
*** _cursesmodule.c	2000/06/21 01:41:48	2.24
--- _cursesmodule.c	2000/06/23 01:36:21	2.25
***************
*** 634,643 ****
--- 634,647 ----
    switch (ARG_COUNT(arg)) {
    case 0:
+     Py_BEGIN_ALLOW_THREADS
      rtn = wgetch(self->win);
+     Py_END_ALLOW_THREADS
      break;
    case 2:
      if (!PyArg_Parse(arg,"(ii);y,x",&y,&x))
        return NULL;
+     Py_BEGIN_ALLOW_THREADS
      rtn = mvwgetch(self->win,y,x);
+     Py_END_ALLOW_THREADS
      break;
    default:
***************
*** 658,667 ****
--- 662,675 ----
    switch (ARG_COUNT(arg)) {
    case 0:
+     Py_BEGIN_ALLOW_THREADS
      rtn = wgetch(self->win);
+     Py_END_ALLOW_THREADS
      break;
    case 2:
      if (!PyArg_Parse(arg,"(ii);y,x",&y,&x))
        return NULL;
+     Py_BEGIN_ALLOW_THREADS
      rtn = mvwgetch(self->win,y,x);
+     Py_END_ALLOW_THREADS
      break;
    default:
***************
*** 686,700 ****
--- 694,714 ----
    switch (ARG_COUNT(arg)) {
    case 0:
+     Py_BEGIN_ALLOW_THREADS
      rtn2 = wgetstr(self->win,rtn);
+     Py_END_ALLOW_THREADS
      break;
    case 1:
      if (!PyArg_Parse(arg,"i;n", &n))
        return NULL;
+     Py_BEGIN_ALLOW_THREADS
      rtn2 = wgetnstr(self->win,rtn,n);
+     Py_END_ALLOW_THREADS
      break;
    case 2:
      if (!PyArg_Parse(arg,"(ii);y,x",&y,&x))
        return NULL;
+     Py_BEGIN_ALLOW_THREADS
      rtn2 = mvwgetstr(self->win,y,x,rtn);
+     Py_END_ALLOW_THREADS
      break;
    case 3:
***************
*** 703,710 ****
--- 717,728 ----
  #if defined(__sgi__) || defined(__sun__)
   /* Untested */
+     Py_BEGIN_ALLOW_THREADS
      rtn2 = wmove(self->win,y,x)==ERR ? ERR :
        wgetnstr(self->win, rtn, n);
+     Py_END_ALLOW_THREADS
  #else
+     Py_BEGIN_ALLOW_THREADS
      rtn2 = mvwgetnstr(self->win, y, x, rtn, n);
+     Py_END_ALLOW_THREADS
  #endif
      break;
***************
*** 997,1000 ****
--- 1015,1019 ----
  {
    int pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol;
+   int rtn;
  
    if (self->win->_flags & _ISPAD) {
***************
*** 1007,1017 ****
  		       &smincol, &smaxrow, &smaxcol))
  	return NULL;
!       return PyCursesCheckERR(pnoutrefresh(self->win,
! 				       pminrow, pmincol, sminrow, 
! 				       smincol, smaxrow, smaxcol),
! 			      "pnoutrefresh");
      default:
        PyErr_SetString(PyCursesError, 
! 		      "noutrefresh was called for a pad;" \
  		      "requires 6 arguments");
        return NULL;
--- 1026,1038 ----
  		       &smincol, &smaxrow, &smaxcol))
  	return NULL;
!       Py_BEGIN_ALLOW_THREADS
!       rtn = pnoutrefresh(self->win,
! 			 pminrow, pmincol, sminrow, 
! 			 smincol, smaxrow, smaxcol),
!       Py_END_ALLOW_THREADS
!       return PyCursesCheckERR(rtn, "pnoutrefresh");
      default:
        PyErr_SetString(PyCursesError, 
! 		      "noutrefresh() called for a pad " 
  		      "requires 6 arguments");
        return NULL;
***************
*** 1020,1024 ****
      if (!PyArg_NoArgs(arg))
        return NULL;    
!     return PyCursesCheckERR(wnoutrefresh(self->win), "wnoutrefresh");
    }
  }
--- 1041,1049 ----
      if (!PyArg_NoArgs(arg))
        return NULL;    
! 
!     Py_BEGIN_ALLOW_THREADS
!     rtn = wnoutrefresh(self->win);
!     Py_END_ALLOW_THREADS
!     return PyCursesCheckERR(rtn, "wnoutrefresh");
    }
  }
***************
*** 1058,1061 ****
--- 1083,1087 ----
  {
    int pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol;
+   int rtn;
    
    if (self->win->_flags & _ISPAD) {
***************
*** 1068,1078 ****
  		       &smincol, &smaxrow, &smaxcol))
  	return NULL;
!       return PyCursesCheckERR(prefresh(self->win,
! 				       pminrow, pmincol, sminrow, 
! 				       smincol, smaxrow, smaxcol),
! 			      "prefresh");
      default:
        PyErr_SetString(PyCursesError, 
! 		      "refresh was called for a pad; requires 6 arguments");
        return NULL;
      }
--- 1094,1108 ----
  		       &smincol, &smaxrow, &smaxcol))
  	return NULL;
! 
!       Py_BEGIN_ALLOW_THREADS
!       rtn = prefresh(self->win,
! 		     pminrow, pmincol, sminrow, 
! 		     smincol, smaxrow, smaxcol),
! 	
!       Py_END_ALLOW_THREADS
!       return PyCursesCheckERR(rtn, "prefresh");
      default:
        PyErr_SetString(PyCursesError, 
! 		      "refresh() for a pad requires 6 arguments");
        return NULL;
      }
***************
*** 1080,1084 ****
      if (!PyArg_NoArgs(arg))
        return NULL;    
!     return PyCursesCheckERR(wrefresh(self->win), "wrefresh");
    }
  }
--- 1110,1117 ----
      if (!PyArg_NoArgs(arg))
        return NULL;    
!     Py_BEGIN_ALLOW_THREADS
!     rtn = wrefresh(self->win);
!     Py_END_ALLOW_THREADS
!     return PyCursesCheckERR(rtn);    
    }
  }