ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

2005/09/04のpatchコード

cdk-5.0-20050424.ext/だけに発見: Makefile
diff -cr cdk-5.0-20050424/Makefile.in cdk-5.0-20050424.ext/Makefile.in
*** cdk-5.0-20050424/Makefile.in	Mon Apr 25 08:06:20 2005
--- cdk-5.0-20050424.ext/Makefile.in	Tue Sep  6 00:12:22 2005
***************
*** 75,81 ****
  LIBS		= @LIBS@
  
  CFLAGS		= @CFLAGS@ @EXTRA_CFLAGS@
! CPPFLAGS	= @DEFS@ -I./include -I$(srcdir)/include @CPPFLAGS@
  
  LDFLAGS		= @LDFLAGS@
  
--- 75,81 ----
  LIBS		= @LIBS@
  
  CFLAGS		= @CFLAGS@ @EXTRA_CFLAGS@
! CPPFLAGS	= @DEFS@ -I./include -I$(srcdir)/include -I/usr/include/python2.4 @CPPFLAGS@
  
  LDFLAGS		= @LDFLAGS@
  
diff -cr cdk-5.0-20050424/binding.c cdk-5.0-20050424.ext/binding.c
*** cdk-5.0-20050424/binding.c	Wed Mar  9 08:25:41 2005
--- cdk-5.0-20050424.ext/binding.c	Sun Sep  4 17:11:06 2005
***************
*** 166,172 ****
  {
     EObjectType cdktype = ObjTypeOf (obj);
     CDKOBJS *test = bindableObject (&cdktype, obj);
!    int result = wgetch (InputWindowOf (obj));
  
     if (result >= 0
         && test != 0
--- 166,176 ----
  {
     EObjectType cdktype = ObjTypeOf (obj);
     CDKOBJS *test = bindableObject (&cdktype, obj);
!    int result;
!    
!    Py_BEGIN_ALLOW_THREADS
!    result = wgetch (InputWindowOf (obj));
!    Py_END_ALLOW_THREADS
  
     if (result >= 0
         && test != 0
diff -cr cdk-5.0-20050424/button.c cdk-5.0-20050424.ext/button.c
*** cdk-5.0-20050424/button.c	Mon Aug 30 09:11:34 2004
--- cdk-5.0-20050424.ext/button.c	Sun Sep  4 17:00:54 2005
***************
*** 540,546 ****
--- 540,548 ----
     CDKBUTTON *button = (CDKBUTTON *) object;
  
     drawCDKButtonText (button);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (button->win);
+    Py_END_ALLOW_THREADS
  }
  
  static void _unfocusCDKButton (CDKOBJS * object)
***************
*** 548,554 ****
--- 550,558 ----
     CDKBUTTON *button = (CDKBUTTON *) object;
  
     drawCDKButtonText (button);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (button->win);
+    Py_END_ALLOW_THREADS
  }
  
  dummyRefreshData(Button)
diff -cr cdk-5.0-20050424/cdk.c cdk-5.0-20050424.ext/cdk.c
*** cdk-5.0-20050424/cdk.c	Mon Apr 25 00:08:17 2005
--- cdk-5.0-20050424.ext/cdk.c	Sun Sep  4 17:01:06 2005
***************
*** 1325,1331 ****
--- 1325,1333 ----
     if (window != 0)
     {
        werase (window);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (window);
+       Py_END_ALLOW_THREADS
     }
  }
  
diff -cr cdk-5.0-20050424/cdkscreen.c cdk-5.0-20050424.ext/cdkscreen.c
*** cdk-5.0-20050424/cdkscreen.c	Mon Aug 30 06:45:42 2004
--- cdk-5.0-20050424.ext/cdkscreen.c	Sun Sep  4 17:01:23 2005
***************
*** 338,344 ****
--- 338,346 ----
  void refreshCDKWindow (WINDOW *win)
  {
     touchwin (win);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (win);
+    Py_END_ALLOW_THREADS
  }
  
  /*
***************
*** 381,387 ****
--- 383,391 ----
     }
  
     /* Refresh the screen. */
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (cdkscreen->window);
+    Py_END_ALLOW_THREADS
  }
  
  /*
cdk-5.0-20050424.ext/cliだけに発見: Makefile
diff -cr cdk-5.0-20050424/cli/cdkalphalist.c cdk-5.0-20050424.ext/cli/cdkalphalist.c
*** cdk-5.0-20050424/cli/cdkalphalist.c	Wed Mar  9 04:51:01 2005
--- cdk-5.0-20050424.ext/cli/cdkalphalist.c	Sun Sep  4 17:00:09 2005
***************
*** 126,132 ****
--- 126,134 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkcalendar.c cdk-5.0-20050424.ext/cli/cdkcalendar.c
*** cdk-5.0-20050424/cli/cdkcalendar.c	Wed Mar  9 04:54:04 2005
--- cdk-5.0-20050424.ext/cli/cdkcalendar.c	Sun Sep  4 17:05:24 2005
***************
*** 89,95 ****
--- 89,97 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkdialog.c cdk-5.0-20050424.ext/cli/cdkdialog.c
*** cdk-5.0-20050424/cli/cdkdialog.c	Wed Mar  9 04:51:24 2005
--- cdk-5.0-20050424.ext/cli/cdkdialog.c	Sun Sep  4 17:05:41 2005
***************
*** 120,126 ****
--- 120,128 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkentry.c cdk-5.0-20050424.ext/cli/cdkentry.c
*** cdk-5.0-20050424/cli/cdkentry.c	Wed Mar  9 04:51:33 2005
--- cdk-5.0-20050424.ext/cli/cdkentry.c	Sun Sep  4 17:06:05 2005
***************
*** 106,112 ****
--- 106,114 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkfselect.c cdk-5.0-20050424.ext/cli/cdkfselect.c
*** cdk-5.0-20050424/cli/cdkfselect.c	Wed Mar  9 04:54:14 2005
--- cdk-5.0-20050424.ext/cli/cdkfselect.c	Sun Sep  4 17:06:25 2005
***************
*** 91,97 ****
--- 91,99 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkitemlist.c cdk-5.0-20050424.ext/cli/cdkitemlist.c
*** cdk-5.0-20050424/cli/cdkitemlist.c	Wed Mar  9 04:51:49 2005
--- cdk-5.0-20050424.ext/cli/cdkitemlist.c	Sun Sep  4 17:06:45 2005
***************
*** 121,127 ****
--- 121,129 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdklabel.c cdk-5.0-20050424.ext/cli/cdklabel.c
*** cdk-5.0-20050424/cli/cdklabel.c	Wed Mar  9 04:52:01 2005
--- cdk-5.0-20050424.ext/cli/cdklabel.c	Sun Sep  4 17:07:01 2005
***************
*** 96,102 ****
--- 96,104 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkmatrix.c cdk-5.0-20050424.ext/cli/cdkmatrix.c
*** cdk-5.0-20050424/cli/cdkmatrix.c	Wed Mar  9 04:52:01 2005
--- cdk-5.0-20050424.ext/cli/cdkmatrix.c	Sun Sep  4 17:07:23 2005
***************
*** 164,170 ****
--- 164,172 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkmentry.c cdk-5.0-20050424.ext/cli/cdkmentry.c
*** cdk-5.0-20050424/cli/cdkmentry.c	Wed Mar  9 04:52:08 2005
--- cdk-5.0-20050424.ext/cli/cdkmentry.c	Sun Sep  4 17:07:43 2005
***************
*** 106,112 ****
--- 106,114 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkradio.c cdk-5.0-20050424.ext/cli/cdkradio.c
*** cdk-5.0-20050424/cli/cdkradio.c	Wed Mar  9 04:52:15 2005
--- cdk-5.0-20050424.ext/cli/cdkradio.c	Sun Sep  4 17:08:00 2005
***************
*** 133,139 ****
--- 133,141 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkscale.c cdk-5.0-20050424.ext/cli/cdkscale.c
*** cdk-5.0-20050424/cli/cdkscale.c	Wed Mar  9 04:52:22 2005
--- cdk-5.0-20050424.ext/cli/cdkscale.c	Sun Sep  4 17:08:30 2005
***************
*** 134,140 ****
--- 134,142 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkscroll.c cdk-5.0-20050424.ext/cli/cdkscroll.c
*** cdk-5.0-20050424/cli/cdkscroll.c	Wed Mar  9 04:52:29 2005
--- cdk-5.0-20050424.ext/cli/cdkscroll.c	Sun Sep  4 17:08:49 2005
***************
*** 128,134 ****
--- 128,136 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkselection.c cdk-5.0-20050424.ext/cli/cdkselection.c
*** cdk-5.0-20050424/cli/cdkselection.c	Wed Mar  9 04:52:36 2005
--- cdk-5.0-20050424.ext/cli/cdkselection.c	Sun Sep  4 17:09:08 2005
***************
*** 189,195 ****
--- 189,197 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkslider.c cdk-5.0-20050424.ext/cli/cdkslider.c
*** cdk-5.0-20050424/cli/cdkslider.c	Wed Mar  9 04:52:43 2005
--- cdk-5.0-20050424.ext/cli/cdkslider.c	Sun Sep  4 17:09:27 2005
***************
*** 137,143 ****
--- 137,145 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdktemplate.c cdk-5.0-20050424.ext/cli/cdktemplate.c
*** cdk-5.0-20050424/cli/cdktemplate.c	Wed Mar  9 04:52:57 2005
--- cdk-5.0-20050424.ext/cli/cdktemplate.c	Sun Sep  4 17:09:44 2005
***************
*** 99,105 ****
--- 99,107 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
diff -cr cdk-5.0-20050424/cli/cdkviewer.c cdk-5.0-20050424.ext/cli/cdkviewer.c
*** cdk-5.0-20050424/cli/cdkviewer.c	Wed Mar  9 04:53:13 2005
--- cdk-5.0-20050424.ext/cli/cdkviewer.c	Sun Sep  4 17:10:01 2005
***************
*** 116,122 ****
--- 116,124 ----
     {
        holder = char2Chtype (temp, &j1, &j2);
        wbkgd (cdkScreen->window, holder[0]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (cdkScreen->window);
+       Py_END_ALLOW_THREADS
        freeChtype (holder);
     }
  
cdk-5.0-20050424.ext/だけに発見: config.cache
cdk-5.0-20050424.ext/だけに発見: config.log
cdk-5.0-20050424.ext/だけに発見: config.status
cdk-5.0-20050424.ext/demosだけに発見: Makefile
diff -cr cdk-5.0-20050424/dialog.c cdk-5.0-20050424.ext/dialog.c
*** cdk-5.0-20050424/dialog.c	Mon Aug 30 09:13:40 2004
--- cdk-5.0-20050424.ext/dialog.c	Sun Sep  4 17:01:38 2005
***************
*** 138,144 ****
--- 138,146 ----
  			dialog->highlight,
  			HORIZONTAL,
  			0, dialog->buttonLen[dialog->currentButton]);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (dialog->win);
+    Py_END_ALLOW_THREADS
  
     /* Check if actions is null. */
     if (actions == 0)
***************
*** 267,273 ****
--- 269,277 ----
  
     if (!complete) {
        drawCDKDialogButtons (dialog);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (dialog->win);
+       Py_END_ALLOW_THREADS
        setExitType(dialog, 0);
     }
  
diff -cr cdk-5.0-20050424/draw.c cdk-5.0-20050424.ext/draw.c
*** cdk-5.0-20050424/draw.c	Mon Nov  8 08:36:55 2004
--- cdk-5.0-20050424.ext/draw.c	Sun Sep  4 17:01:53 2005
***************
*** 63,69 ****
--- 63,71 ----
     mvwaddch (window, tly, brx, ACS_URCORNER | attr);
     mvwaddch (window, bry, tlx, ACS_LLCORNER | attr);
     mvwaddch (window, bry, brx, ACS_LRCORNER | attr);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (window);
+    Py_END_ALLOW_THREADS
  }
  
  /*
***************
*** 118,124 ****
--- 120,128 ----
     }
     if (count != 0)
     {
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (win);
+       Py_END_ALLOW_THREADS
     }
  }
  
***************
*** 220,226 ****
--- 224,232 ----
        mvwaddch (shadowWin, 0,	 x_hi, ACS_URCORNER | A_DIM);
        mvwaddch (shadowWin, y_hi, 0,    ACS_LLCORNER | A_DIM);
        mvwaddch (shadowWin, y_hi, x_hi, ACS_LRCORNER | A_DIM);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (shadowWin);
+       Py_END_ALLOW_THREADS
     }
  }
  
diff -cr cdk-5.0-20050424/entry.c cdk-5.0-20050424.ext/entry.c
*** cdk-5.0-20050424/entry.c	Wed Sep  1 08:25:19 2004
--- cdk-5.0-20050424.ext/entry.c	Sun Sep  4 17:02:21 2005
***************
*** 293,299 ****
--- 293,301 ----
  		 else
  		 {
  		    wmove (entry->fieldWin, 0, --entry->screenCol);
+ 		    Py_BEGIN_ALLOW_THREADS
  		    wrefresh (entry->fieldWin);
+ 		    Py_END_ALLOW_THREADS
  		 }
  		 break;
  
***************
*** 324,330 ****
--- 326,334 ----
  		    {
  		       wmove (entry->fieldWin, 0, ++entry->screenCol);
  		    }
+ 		    Py_BEGIN_ALLOW_THREADS
  		    wrefresh (entry->fieldWin);
+ 		    Py_END_ALLOW_THREADS
  		 }
  		 break;
  
***************
*** 639,645 ****
--- 643,651 ----
     entry->leftChar	= 0;
  
     /* Refresh the entry field. */
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (entry->fieldWin);
+    Py_END_ALLOW_THREADS
  }
  
  /*
***************
*** 931,937 ****
--- 937,945 ----
     CDKENTRY *entry = (CDKENTRY *)object;
  
     wmove (entry->fieldWin, 0, entry->screenCol);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (entry->fieldWin);
+    Py_END_ALLOW_THREADS
  }
  
  static void _unfocusCDKEntry(CDKOBJS *object)
***************
*** 939,945 ****
--- 947,955 ----
     CDKENTRY *entry = (CDKENTRY *)object;
  
     drawCDKEntry (entry, ObjOf(entry)->box);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (entry->fieldWin);
+    Py_END_ALLOW_THREADS
  }
  
  #if 0
cdk-5.0-20050424.ext/examplesだけに発見: Makefile
diff -cr cdk-5.0-20050424/examples/traverse_ex.c cdk-5.0-20050424.ext/examples/traverse_ex.c
*** cdk-5.0-20050424/examples/traverse_ex.c	Wed Sep  1 09:20:38 2004
--- cdk-5.0-20050424.ext/examples/traverse_ex.c	Sun Sep  4 17:10:38 2005
***************
*** 665,671 ****
--- 665,673 ----
        window = screen->window;
        mvwprintw (window, getmaxy (window) - 1, 0, "selection %d/%d", mp, sp);
        clrtoeol ();
+       Py_BEGIN_ALLOW_THREADS
        refresh ();
+       Py_END_ALLOW_THREADS
        if (sp >= 0 && sp < (int)NumElements (menu_table))
  	 make_any (screen, mp, menu_table[sp].type);
        break;
diff -cr cdk-5.0-20050424/gen-scale.c cdk-5.0-20050424.ext/gen-scale.c
*** cdk-5.0-20050424/gen-scale.c	Wed Sep  1 07:18:03 2004
--- cdk-5.0-20050424.ext/gen-scale.c	Sun Sep  4 17:02:40 2005
***************
*** 588,594 ****
--- 588,596 ----
  		   widget->label,
  		   HORIZONTAL, 0,
  		   widget->labelLen);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (widget->labelWin);
+       Py_END_ALLOW_THREADS
     }
     refreshCDKWindow (widget->win);
  
diff -cr cdk-5.0-20050424/gen-slider.c cdk-5.0-20050424.ext/gen-slider.c
*** cdk-5.0-20050424/gen-slider.c	Wed Sep  1 09:15:00 2004
--- cdk-5.0-20050424.ext/gen-slider.c	Sun Sep  4 17:02:52 2005
***************
*** 608,614 ****
--- 608,616 ----
  		   widget->label,
  		   HORIZONTAL, 0,
  		   widget->labelLen);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (widget->labelWin);
+       Py_END_ALLOW_THREADS
     }
     refreshCDKWindow (widget->win);
  
diff -cr cdk-5.0-20050424/graph.c cdk-5.0-20050424.ext/graph.c
*** cdk-5.0-20050424/graph.c	Mon Aug 30 09:18:12 2004
--- cdk-5.0-20050424.ext/graph.c	Sun Sep  4 17:03:04 2005
***************
*** 449,455 ****
--- 449,457 ----
     /* If the count is zero, then there aren't any points. */
     if (graph->count == 0)
     {
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (graph->win);
+       Py_END_ALLOW_THREADS
        return;
     }
     spacing = (graph->boxWidth - TITLE_LM) / graph->count;
diff -cr cdk-5.0-20050424/include/cdk.h cdk-5.0-20050424.ext/include/cdk.h
*** cdk-5.0-20050424/include/cdk.h	Mon Aug 30 06:49:32 2004
--- cdk-5.0-20050424.ext/include/cdk.h	Sun Sep  4 17:18:20 2005
***************
*** 322,327 ****
--- 322,339 ----
   */
  #include <draw.h>
  
+ /*
+  * use Pycdk
+  */
+ #define CDK_PYTHON_EXT
+ #ifdef CDK_PYTHON_EXT
+ #include <Python.h>
+ #else
+ /* no use define macro */
+ #define	Py_BEGIN_ALLOW_THREADS
+ #define	Py_END_ALLOW_THREADS
+ #endif
+ 
  #ifdef __cplusplus
  }
  #endif
cdk-5.0-20050424.ext/includeだけに発見: cdk_config.h
cdk-5.0-20050424.ext/includeだけに発見: cdk_version.h
diff -cr cdk-5.0-20050424/marquee.c cdk-5.0-20050424.ext/marquee.c
*** cdk-5.0-20050424/marquee.c	Mon Aug 30 09:22:24 2004
--- cdk-5.0-20050424.ext/marquee.c	Sun Sep  4 17:03:13 2005
***************
*** 125,131 ****
--- 125,133 ----
  	 mvwaddch (marquee->win, BorderOf(marquee), x, ch);
  	 y++;
        }
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (marquee->win);
+       Py_END_ALLOW_THREADS
  
        /* Set my variables. */
        if (mesgLength < viewLimit)
***************
*** 184,190 ****
--- 186,194 ----
  
  	 /* Time to start over.  */
  	 mvwaddch (marquee->win, BorderOf(marquee), BorderOf(marquee), ' ');
+          Py_BEGIN_ALLOW_THREADS
  	 wrefresh (marquee->win);
+          Py_END_ALLOW_THREADS
  	 firstTime = TRUE;
        }
  
diff -cr cdk-5.0-20050424/matrix.c cdk-5.0-20050424.ext/matrix.c
*** cdk-5.0-20050424/matrix.c	Tue Aug 31 10:41:54 2004
--- cdk-5.0-20050424.ext/matrix.c	Sun Sep  4 16:49:54 2005
***************
*** 357,363 ****
--- 357,365 ----
  		ACS_LLCORNER,	ACS_LRCORNER,
  		ACS_HLINE,	ACS_VLINE,
  		A_BOLD);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+    Py_END_ALLOW_THREADS
     highlightCDKMatrixCell (matrix);
  
     /* Check if there is a pre-process function to be called. */
***************
*** 401,407 ****
--- 403,411 ----
  		       charcount--;
  		       mvwdelch (MATRIX_CELL(matrix, matrix->crow, matrix->ccol), 1, charcount+1);
  		       mvwinsch (MATRIX_CELL(matrix, matrix->crow, matrix->ccol), 1, charcount+1, matrix->filler);
+ 		       Py_BEGIN_ALLOW_THREADS
  		       wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+ 		       Py_END_ALLOW_THREADS
  		       MATRIX_INFO(matrix, matrix->row, matrix->col)[charcount] = '\0';
  		    }
  		    else
***************
*** 681,687 ****
--- 685,693 ----
  				A_NORMAL,
  				matrix->boxCell);
  	      }
+ 	      Py_BEGIN_ALLOW_THREADS
  	      wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+ 	      Py_END_ALLOW_THREADS
  	      setExitType(matrix, input);
  	      ret = 1;
  	      complete = TRUE;
***************
*** 706,712 ****
--- 712,720 ----
  				A_NORMAL,
  				matrix->boxCell);
  	      }
+ 	      Py_BEGIN_ALLOW_THREADS
  	      wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+ 	      Py_END_ALLOW_THREADS
  	      setExitType(matrix, input);
  	      complete = TRUE;
  	      break;
***************
*** 746,752 ****
--- 754,762 ----
  				   0,
  				   matrix->boxCell);
  	    }
+ 	    Py_BEGIN_ALLOW_THREADS
  	    wrefresh (MATRIX_CELL(matrix, matrix->oldcrow, matrix->oldccol));
+ 	    Py_END_ALLOW_THREADS
  
  	    /* Highlight the new cell. */
  	    attrbox (MATRIX_CELL(matrix, matrix->crow, matrix->ccol),
***************
*** 754,760 ****
--- 764,772 ----
  			   ACS_LLCORNER,	ACS_LRCORNER,
  			   ACS_HLINE,	ACS_VLINE,
  			   A_BOLD);
+ 	    Py_BEGIN_ALLOW_THREADS
  	    wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+ 	    Py_END_ALLOW_THREADS
  	    highlightCDKMatrixCell (matrix);
  	 }
  
***************
*** 780,786 ****
--- 792,800 ----
  			   ACS_LLCORNER,	ACS_LRCORNER,
  			   ACS_HLINE,	ACS_VLINE,
  			   A_BOLD);
+ 	    Py_BEGIN_ALLOW_THREADS
  	    wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+ 	    Py_END_ALLOW_THREADS
  	    highlightCDKMatrixCell (matrix);
  	 }
  
***************
*** 796,802 ****
--- 810,818 ----
  	       infolen = (int)strlen (MATRIX_INFO(matrix, matrix->trow+matrix->crow-1, matrix->lcol+matrix->ccol-1));
  	       wmove (MATRIX_CELL(matrix, matrix->crow, matrix->ccol), 1, infolen+1);
  	    }
+ 	    Py_BEGIN_ALLOW_THREADS
  	    wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+ 	    Py_END_ALLOW_THREADS
  	 }
  
  	 /* Should we call a post-process? */
***************
*** 874,880 ****
--- 890,898 ----
        /* Update the screen. */
        wmove (MATRIX_CELL(matrix, matrix->crow, matrix->ccol), 1, (int)strlen (MATRIX_INFO(matrix, matrix->row, matrix->col))+1);
        waddch (MATRIX_CELL(matrix, matrix->crow, matrix->ccol), newchar);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+       Py_END_ALLOW_THREADS
  
        /* Update the character pointer. */
        MATRIX_INFO(matrix, matrix->row, matrix->col)[charcount++] = newchar;
***************
*** 914,920 ****
--- 932,940 ----
        mvwaddch (MATRIX_CELL(matrix, matrix->crow, matrix->ccol), 1, x, ch | highlight);
     }
     wmove (MATRIX_CELL(matrix, matrix->crow, matrix->ccol), 1, infolen+1);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+    Py_END_ALLOW_THREADS
  }
  
  /*
***************
*** 1006,1012 ****
--- 1026,1034 ----
        mvwaddch (cell, 1, x, ch | highlight);
     }
     wmove (cell, 1, infolen + 1);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (cell);
+    Py_END_ALLOW_THREADS
  
     /* Only draw the box iff the user asked for a box. */
     if (!Box)
***************
*** 1170,1176 ****
--- 1192,1200 ----
  		ACS_LLCORNER,	ACS_LRCORNER,
  		ACS_HLINE,	ACS_VLINE,
  		A_BOLD);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+    Py_END_ALLOW_THREADS
     highlightCDKMatrixCell (matrix);
  }
  
***************
*** 1206,1212 ****
--- 1230,1238 ----
  			matrix->coltitle[matrix->lcol + x-1],
  			HORIZONTAL,
  			0, matrix->coltitleLen[matrix->lcol + x-1]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (MATRIX_CELL(matrix, 0, x));
+       Py_END_ALLOW_THREADS
     }
  
     /* Fill in the rest of the matrix. */
***************
*** 1218,1224 ****
--- 1244,1252 ----
  			matrix->rowtitle[matrix->trow + x-1],
  			HORIZONTAL,
  			0, matrix->rowtitleLen[matrix->trow + x-1]);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (MATRIX_CELL(matrix, x, 0));
+       Py_END_ALLOW_THREADS
  
        /* Draw in the cells.. */
        for (y=1; y <= matrix->vcols; y++)
***************
*** 1237,1243 ****
--- 1265,1273 ----
  		ACS_LLCORNER,	ACS_LRCORNER,
  		ACS_HLINE,	ACS_VLINE,
  		A_BOLD);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (MATRIX_CELL(matrix, matrix->crow, matrix->ccol));
+    Py_END_ALLOW_THREADS
     highlightCDKMatrixCell (matrix);
  }
  
***************
*** 1635,1641 ****
--- 1665,1673 ----
  			matrix->rowtitle[matrix->trow+x-1],
  			HORIZONTAL,
  			0, matrix->rowtitleLen[matrix->trow+x-1]);
+          Py_BEGIN_ALLOW_THREADS
  	 wrefresh (MATRIX_CELL(matrix, x, 0));
+          Py_END_ALLOW_THREADS
        }
     }
  
***************
*** 1650,1656 ****
--- 1682,1690 ----
  			matrix->coltitle[matrix->lcol+x-1],
  			HORIZONTAL,
  			0, matrix->coltitleLen[matrix->lcol+x-1]);
+          Py_BEGIN_ALLOW_THREADS
  	 wrefresh (MATRIX_CELL(matrix, 0, x));
+          Py_END_ALLOW_THREADS
        }
     }
  }
diff -cr cdk-5.0-20050424/mentry.c cdk-5.0-20050424.ext/mentry.c
*** cdk-5.0-20050424/mentry.c	Mon Aug 30 09:25:05 2004
--- cdk-5.0-20050424.ext/mentry.c	Sun Sep  4 17:03:57 2005
***************
*** 271,277 ****
--- 271,279 ----
  		 {
  		    mentry->currentCol--;
  		    wmove (mentry->fieldWin, mentry->currentRow, mentry->currentCol);
+ 		    Py_BEGIN_ALLOW_THREADS
  		    wrefresh (mentry->fieldWin);
+ 		    Py_END_ALLOW_THREADS
  		 }
  		 else
  		 {
***************
*** 294,300 ****
--- 296,304 ----
  		       mentry->currentRow--;
  		       mentry->currentCol = mentry->fieldWidth - 1;
  		       wmove (mentry->fieldWin, mentry->currentRow, mentry->currentCol);
+ 		       Py_BEGIN_ALLOW_THREADS
  		       wrefresh (mentry->fieldWin);
+ 		       Py_END_ALLOW_THREADS
  		    }
  		 }
  		 break;
***************
*** 310,316 ****
--- 314,322 ----
  		    {
  		       mentry->currentCol++;
  		       wmove (mentry->fieldWin, mentry->currentRow, mentry->currentCol);
+ 		       Py_BEGIN_ALLOW_THREADS
  		       wrefresh (mentry->fieldWin);
+ 		       Py_END_ALLOW_THREADS
  		    }
  		 }
  		 else
***************
*** 333,339 ****
--- 339,347 ----
  		       mentry->currentCol = 0;
  		       mentry->currentRow++;
  		       wmove (mentry->fieldWin, mentry->currentRow, mentry->currentCol);
+ 		       Py_BEGIN_ALLOW_THREADS
  		       wrefresh (mentry->fieldWin);
+ 		       Py_END_ALLOW_THREADS
  		    }
  		 }
  		 break;
***************
*** 349,355 ****
--- 357,365 ----
  		    {
  		       mentry->currentRow++;
  		       wmove (mentry->fieldWin, mentry->currentRow, mentry->currentCol);
+ 		       Py_BEGIN_ALLOW_THREADS
  		       wrefresh (mentry->fieldWin);
+ 		       Py_END_ALLOW_THREADS
  		    }
  		 }
  		 else
***************
*** 379,385 ****
--- 389,397 ----
  		 {
  		    mentry->currentRow--;
  		    wmove (mentry->fieldWin, mentry->currentRow, mentry->currentCol);
+ 		    Py_BEGIN_ALLOW_THREADS
  		    wrefresh (mentry->fieldWin);
+ 		    Py_END_ALLOW_THREADS
  		 }
  		 else
  		 {
***************
*** 797,803 ****
--- 809,817 ----
  			mentry->currentCol++,
  			newchar|mentry->fieldAttr);
  	 }
+          Py_BEGIN_ALLOW_THREADS
  	 wrefresh (mentry->fieldWin);
+          Py_END_ALLOW_THREADS
        }
  
        /* Have we gone out of bounds. */
***************
*** 819,825 ****
--- 833,841 ----
  	    drawCDKMentryField (mentry);
  	 }
  	 wmove (mentry->fieldWin, mentry->currentRow, mentry->currentCol);
+          Py_BEGIN_ALLOW_THREADS
  	 wrefresh (mentry->fieldWin);
+          Py_END_ALLOW_THREADS
        }
     }
  }
***************
*** 835,841 ****
--- 851,859 ----
     if (Box)
     {
        drawObjBox (mentry->win, ObjOf(mentry));
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (mentry->win);
+       Py_END_ALLOW_THREADS
     }
  
     /* Do we need to draw in the shadow??? */
***************
*** 851,857 ****
--- 869,877 ----
  			mentry->label,
  			HORIZONTAL, 0,
  			mentry->labelLen);
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (mentry->labelWin);
+       Py_END_ALLOW_THREADS
     }
  
     /* Draw the mentry field. */
***************
*** 1049,1062 ****
--- 1069,1086 ----
     CDKMENTRY *mentry = (CDKMENTRY*)object;
  
     wmove(mentry->fieldWin, 0, mentry->currentCol);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (mentry->fieldWin);
+    Py_END_ALLOW_THREADS
  }
  
  static void _unfocusCDKMentry(CDKOBJS *object)
  {
     CDKMENTRY *mentry = (CDKMENTRY*)object;
  
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (mentry->fieldWin);
+    Py_END_ALLOW_THREADS
  }
  
  dummyRefreshData(Mentry)
diff -cr cdk-5.0-20050424/menu.c cdk-5.0-20050424.ext/menu.c
*** cdk-5.0-20050424/menu.c	Mon Aug 30 09:26:17 2004
--- cdk-5.0-20050424.ext/menu.c	Sun Sep  4 17:04:08 2005
***************
*** 229,235 ****
--- 229,237 ----
  	 /* Draw the new sub-title. */
  	 selectItem (menu, menu->currentSubtitle, 0);
  
+          Py_BEGIN_ALLOW_THREADS
  	 wrefresh (menu->pullWin[menu->currentTitle]);
+          Py_END_ALLOW_THREADS
        }
  
        ObjOf(menu)->inputWindow = menu->titleWin[menu->currentTitle];
***************
*** 530,539 ****
--- 532,543 ----
        /* Erase the menu items. */
        for (x=0 ; x < menu->menuItems; x++)
        {
+          Py_BEGIN_ALLOW_THREADS
  	 werase (menu->titleWin[x]);
  	 wrefresh (menu->titleWin[x]);
  	 werase (menu->pullWin[x]);
  	 wrefresh (menu->pullWin[x]);
+          Py_END_ALLOW_THREADS
        }
     }
  }
***************
*** 593,599 ****
--- 597,605 ----
  {
     /* Erase the sub-menu. */
     eraseCDKMenuSubwin (menu);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (menu->pullWin[menu->currentTitle]);
+    Py_END_ALLOW_THREADS
  
     /* Refresh the screen. */
     refreshCDKScreen (ScreenOf(menu));
diff -cr cdk-5.0-20050424/scroll.c cdk-5.0-20050424.ext/scroll.c
*** cdk-5.0-20050424/scroll.c	Mon Apr 25 05:27:19 2005
--- cdk-5.0-20050424.ext/scroll.c	Sun Sep  4 16:56:06 2005
***************
*** 932,938 ****
--- 932,940 ----
     CDKSCROLL *scrollp = (CDKSCROLL *)object;
  
     drawCDKScrollCurrent(scrollp);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (scrollp->listWin);
+    Py_END_ALLOW_THREADS
  }
  
  static void _unfocusCDKScroll(CDKOBJS *object)
***************
*** 940,946 ****
--- 942,950 ----
     CDKSCROLL *scrollp = (CDKSCROLL *)object;
  
     drawCDKScrollCurrent(scrollp);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (scrollp->listWin);
+    Py_END_ALLOW_THREADS
  }
  
  dummyRefreshData(Scroll)
diff -cr cdk-5.0-20050424/template.c cdk-5.0-20050424.ext/template.c
*** cdk-5.0-20050424/template.c	Mon Aug 30 09:43:45 2004
--- cdk-5.0-20050424.ext/template.c	Sun Sep  4 17:04:29 2005
***************
*** 641,647 ****
--- 641,649 ----
        cdktemplate->screenPos += direction;
     }
     wmove (cdktemplate->fieldWin, 0, cdktemplate->screenPos);
+    Py_BEGIN_ALLOW_THREADS
     wrefresh (cdktemplate->fieldWin);
+    Py_END_ALLOW_THREADS
  }
  
  /*
diff -cr cdk-5.0-20050424/viewer.c cdk-5.0-20050424.ext/viewer.c
*** cdk-5.0-20050424/viewer.c	Mon Apr 25 05:27:19 2005
--- cdk-5.0-20050424.ext/viewer.c	Sun Sep  4 17:04:51 2005
***************
*** 981,987 ****
--- 981,989 ----
     if (Box)
     {
        drawObjBox (viewer->win, ObjOf(viewer));
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (viewer->win);
+       Py_END_ALLOW_THREADS
     }
  
     /* Draw the info in the viewer. */
***************
*** 1179,1185 ****
--- 1181,1189 ----
     if (ObjOf(viewer)->box)
     {
        drawObjBox (viewer->win, ObjOf(viewer));
+       Py_BEGIN_ALLOW_THREADS
        wrefresh (viewer->win);
+       Py_END_ALLOW_THREADS
     }
  
     /* Draw the separation line. */