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

A.M. Kuchling python-dev@python.org
2000年6月22日 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); 
 }
 }

AltStyle によって変換されたページ (->オリジナル) /