<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lib.agar.scm">
    <title>gmane.comp.lib.agar.scm</title>
    <link>http://blog.gmane.org/gmane.comp.lib.agar.scm</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1824"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1823"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1822"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1821"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1820"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1819"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1818"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1817"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1816"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1815"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1814"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1813"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1812"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1811"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1810"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1809"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1808"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1807"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1806"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1805"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1824">
    <title>Agar: r9601 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1824</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-23 21:50:07 -0500 (Thu, 23 May 2013)
New Revision: 9601

Modified:
   trunk/gui/AG_Window.3
   trunk/gui/drv_sw.c
   trunk/gui/drv_sw.h
   trunk/gui/window.c
   trunk/gui/window.h
Log:
implement AG_WINDOW_TILING



Modified: trunk/gui/AG_Window.3
===================================================================
--- trunk/gui/AG_Window.32013-05-23 09:45:58 UTC (rev 9600)
+++ trunk/gui/AG_Window.32013-05-24 02:50:07 UTC (rev 9601)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -119,7 +119,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 .Fn AG_WindowSetBottomBorder "AG_Window *win" "int pixels"
 .Pp
 .Ft "void"
-.Fn AG_WindowSetPosition "AG_Window *win, enum ag_window_alignment alignment" "int cascade"
+.Fn AG_WindowSetPosition "AG_Window *win, enum ag_window_alignment alignment" "int tiling"
 .Pp
 .Ft "void"
 .Fn AG_WindowSetGeometry "AG_Window *win" "int x" "int y" "int w" "int h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -330,9 +330,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 window manager (possibly Agar itself, or an external window manager).
 .Pp
 If the
-.Fa cascade
-argument is 1, the window position is slightly incremented or decremented at
-each call (depending on the preferred alignment).
+.Fa tiling
+argument is 1, the
+.Dv AG_WINDOW_TILING
+flag is set (see
+.Dq FLAGS
+section).
+With tiling enabled, the window manager will attempt to avoid overlap between
+existing windows.
 .Pp
 The
 .Fn AG_WindowSetGeometry
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -732,6 +737,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 object:
 .Pp
 .Bl -tag -width "AG_WINDOW_NOUPDATERECT "
+.It AG_WINDOW_TILING
+If no explicit window position is specified, choose a default position
+using a tiling window manager algorithm.
+This method honors the preferred window alignment, and also attempts to
+avoid overlap with other tiling windows.
+Non-tiling windows are ignored in the calculation.
 .It AG_WINDOW_FADEIN
 Enable smooth fade-in for compositing window managers.
 .It AG_WINDOW_FADEOUT

Modified: trunk/gui/drv_sw.c
===================================================================
--- trunk/gui/drv_sw.c2013-05-23 09:45:58 UTC (rev 9600)
+++ trunk/gui/drv_sw.c2013-05-24 02:50:07 UTC (rev 9601)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -44,7 +44,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 Init(void *obj)
 {
 AG_DriverSw *dsw = obj;
-Uint i;
 
 dsw-&amp;gt;w = 0;
 dsw-&amp;gt;h = 0;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -55,11 +54,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 dsw-&amp;gt;winLastKeydown = NULL;
 dsw-&amp;gt;rNom = 20;
 dsw-&amp;gt;rCur = 0;
-
-for (i = 0; i &amp;lt; AG_WINDOW_ALIGNMENT_LAST; i++) {
-dsw-&amp;gt;windowCurX[i] = 0;
-dsw-&amp;gt;windowCurY[i] = 0;
-}
 dsw-&amp;gt;windowXOutLimit = 32;
 dsw-&amp;gt;windowBotOutLimit = 32;
 dsw-&amp;gt;windowIconWidth = 32;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -448,6 +442,106 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #endif
 }
 
+/* Compute default positions for AG_WINDOW_TILING windows */
+static void
+GetTilingPosition(AG_Window *win, int *xDst, int *yDst, int w, int h)
+{
+AG_DriverSw *dsw = AGDRIVER_SW(WIDGET(win)-&amp;gt;drv);
+AG_Window *wOther;
+const int maxTests = 10000, dx = 16;
+int nTest = 0;
+int x = 0, y = 0, xo, yo, wo, ho;
+int xd, yd;
+
+switch (win-&amp;gt;alignment) {
+case AG_WINDOW_TL:xd = 0;yd = 0;break;
+case AG_WINDOW_TC:xd = dsw-&amp;gt;w/2 - w/2;yd = 0;break;
+case AG_WINDOW_TR:xd = dsw-&amp;gt;w - w;yd = 0;break;
+case AG_WINDOW_ML:xd = 0;yd = dsw-&amp;gt;h/2 - h/2;break;
+case AG_WINDOW_ALIGNMENT_NONE:
+case AG_WINDOW_MC:xd = dsw-&amp;gt;w/2 - w/2;yd = dsw-&amp;gt;h/2 - h/2;break;
+case AG_WINDOW_MR:xd = dsw-&amp;gt;w - w;yd = dsw-&amp;gt;h/2 - h/2;break;
+case AG_WINDOW_BL:xd = 0;yd = dsw-&amp;gt;h - h;break;
+case AG_WINDOW_BC:xd = dsw-&amp;gt;w/2 - w/2;yd = dsw-&amp;gt;h - h;break;
+case AG_WINDOW_BR:xd = dsw-&amp;gt;w - w;yd = dsw-&amp;gt;h - h;break;
+}
+x = xd;
+y = yd;
+
+for (;;) {
+OBJECT_FOREACH_CHILD(wOther, dsw, ag_window) {
+if (wOther == win ||
+    (wOther-&amp;gt;flags &amp;amp; AG_WINDOW_TILING) == 0) {
+continue;
+}
+xo = WIDGET(wOther)-&amp;gt;x;
+yo = WIDGET(wOther)-&amp;gt;y;
+wo = WIDGET(wOther)-&amp;gt;w;
+ho = WIDGET(wOther)-&amp;gt;h;
+if (x &amp;lt;= xo+wo &amp;amp;&amp;amp; x+w &amp;gt;= xo &amp;amp;&amp;amp;
+    y &amp;lt;= yo+ho &amp;amp;&amp;amp; y+h &amp;gt;= yo) {
+switch (win-&amp;gt;alignment) {
+case AG_WINDOW_TL:
+case AG_WINDOW_TC:
+case AG_WINDOW_ML:
+case AG_WINDOW_MC:
+x += dx;
+if (x+w &amp;gt; dsw-&amp;gt;w) {
+x = 0;
+y += dx;
+if (y &amp;gt; dsw-&amp;gt;h)
+goto fail;
+}
+break;
+case AG_WINDOW_TR:
+case AG_WINDOW_MR:
+x -= dx;
+if (x &amp;lt; 0) {
+x = dsw-&amp;gt;w - w;
+y += dx;
+if (y &amp;gt; dsw-&amp;gt;h)
+goto fail;
+}
+break;
+case AG_WINDOW_BL:
+case AG_WINDOW_BC:
+x += dx;
+if (x+w &amp;gt; dsw-&amp;gt;w) {
+x = 0;
+y -= dx;
+if (y &amp;lt; 0)
+goto fail;
+}
+break;
+case AG_WINDOW_BR:
+x -= dx;
+if (x &amp;lt; 0) {
+x = dsw-&amp;gt;w - w;
+y -= dx;
+if (y &amp;lt; 0)
+goto fail;
+}
+break;
+}
+break;
+}
+}
+if (wOther == NULL) {
+goto out;
+}
+if (++nTest &amp;gt; maxTests)
+goto fail;
+}
+out:
+*xDst = x;
+*yDst = y;
+return;
+fail:
+Verbose("Window tiling failed\n");
+*xDst = xd;
+*yDst = yd;
+}
+
 /* Compute default window coordinates from requested alignment settings. */
 void
 AG_WM_GetPrefPosition(AG_Window *win, int *x, int *y, int w, int h)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -455,15 +549,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_DriverSw *dsw = AGDRIVER_SW(WIDGET(win)-&amp;gt;drv);
 int xOffs = 0, yOffs = 0;
 
-if (win-&amp;gt;flags &amp;amp; AG_WINDOW_CASCADE) {
-xOffs = dsw-&amp;gt;windowCurX[win-&amp;gt;alignment];
-yOffs = dsw-&amp;gt;windowCurY[win-&amp;gt;alignment];
-dsw-&amp;gt;windowCurX[win-&amp;gt;alignment] += 16;
-dsw-&amp;gt;windowCurY[win-&amp;gt;alignment] += 16;
-if (dsw-&amp;gt;windowCurX[win-&amp;gt;alignment] &amp;gt; dsw-&amp;gt;w)
-dsw-&amp;gt;windowCurX[win-&amp;gt;alignment] = 0;
-if (dsw-&amp;gt;windowCurY[win-&amp;gt;alignment] &amp;gt; dsw-&amp;gt;h)
-dsw-&amp;gt;windowCurY[win-&amp;gt;alignment] = 0;
+if (win-&amp;gt;flags &amp;amp; AG_WINDOW_TILING) {
+GetTilingPosition(win, x, y, w, h);
+return;
 }
 switch (win-&amp;gt;alignment) {
 case AG_WINDOW_TL:

Modified: trunk/gui/drv_sw.h
===================================================================
--- trunk/gui/drv_sw.h2013-05-23 09:45:58 UTC (rev 9600)
+++ trunk/gui/drv_sw.h2013-05-24 02:50:07 UTC (rev 9601)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -66,8 +66,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 int windowBotOutLimit;/* Limit past bottom boundary */
 int windowIconWidth;/* Preferred window icon dimensions */
 int windowIconHeight;
-int windowCurX[AG_WINDOW_ALIGNMENT_LAST];/* For cascading */
-int windowCurY[AG_WINDOW_ALIGNMENT_LAST];
 Uint rNom;/* Nominal refresh rate (ms) */
 int rCur;/* Effective refresh rate (ms) */
 AG_Color bgColor;/* "bgColor" setting */

Modified: trunk/gui/window.c
===================================================================
--- trunk/gui/window.c2013-05-23 09:45:58 UTC (rev 9600)
+++ trunk/gui/window.c2013-05-24 02:50:07 UTC (rev 9601)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -277,6 +277,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_IconSetSurfaceNODUP(win-&amp;gt;icon, agIconWindow.s);
 AG_IconSetBackgroundFill(win-&amp;gt;icon, 1,
     AGDRIVER_SW(drv)-&amp;gt;bgColor);
+AG_SetStyle(win-&amp;gt;icon, "font-size", "80%");
+AG_WidgetCompileStyle(win-&amp;gt;icon);
 }
 
 if (win-&amp;gt;flags &amp;amp; AG_WINDOW_FOCUSONATTACH)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -733,7 +735,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 a.h = r.h;
 
 if (win-&amp;gt;alignment != AG_WINDOW_ALIGNMENT_NONE) {
-AG_WindowComputeAlignment(win, &amp;amp;a);
+if (!AGDRIVER_SINGLE(drv))
+AG_WindowComputeAlignment(win, &amp;amp;a);
 } else {
 if (dmw-&amp;gt;flags &amp;amp; AG_DRIVER_MW_ANYPOS_AVAIL) {
 /* Let the WM choose a default position */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1422,22 +1425,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 void
 AG_WindowUnmaximize(AG_Window *win)
 {
-AG_Driver *drv = WIDGET(win)-&amp;gt;drv;
-AG_Rect r;
-
 if (AG_WindowRestoreGeometry(win) == 0) {
 win-&amp;gt;flags &amp;amp;= ~(AG_WINDOW_MAXIMIZED);
-/* XXX 1.4 */
-if (drv != NULL &amp;amp;&amp;amp; AGDRIVER_SINGLE(drv)) {
-r.x = 0;
-r.y = 0;
-r.w = AGDRIVER_SW(drv)-&amp;gt;w;
-r.h = AGDRIVER_SW(drv)-&amp;gt;h;
-AGDRIVER_CLASS(drv)-&amp;gt;fillRect(drv, r,
-    AGDRIVER_SW(drv)-&amp;gt;bgColor);
-if (AGDRIVER_CLASS(drv)-&amp;gt;updateRegion != NULL)
-AGDRIVER_CLASS(drv)-&amp;gt;updateRegion(drv, r);
-}
+win-&amp;gt;dirty = 1;
 }
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1544,18 +1534,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_SetEvent(icon, "mouse-button-up", IconButtonUp, NULL);
 AG_SetEvent(icon, "mouse-button-down", IconButtonDown, "%p", win);
 
+#if 0
 if (icon-&amp;gt;xSaved != -1) {
 AG_WindowShow(wDND);
 AG_WindowSetGeometry(wDND, icon-&amp;gt;xSaved, icon-&amp;gt;ySaved,
                      icon-&amp;gt;wSaved, icon-&amp;gt;hSaved);
 } else {
-AG_WindowSetPosition(wDND, AG_WINDOW_LOWER_LEFT, 1);
-AG_WindowShow(wDND);
-icon-&amp;gt;xSaved = WIDGET(wDND)-&amp;gt;x;
-icon-&amp;gt;ySaved = WIDGET(wDND)-&amp;gt;y;
-icon-&amp;gt;wSaved = WIDTH(wDND);
-icon-&amp;gt;hSaved = HEIGHT(wDND);
-}
+#endif
+AG_WindowSetPosition(wDND, AG_WINDOW_LOWER_LEFT, 1);
+AG_WindowShow(wDND);
+icon-&amp;gt;xSaved = WIDGET(wDND)-&amp;gt;x;
+icon-&amp;gt;ySaved = WIDGET(wDND)-&amp;gt;y;
+icon-&amp;gt;wSaved = WIDTH(wDND);
+icon-&amp;gt;hSaved = HEIGHT(wDND);
 }
 /* TODO MW: send a WM_CHANGE_STATE */
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1777,11 +1768,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /* Request a specific initial window position. */
 void
 AG_WindowSetPosition(AG_Window *win, enum ag_window_alignment alignment,
-    int cascade)
+    int tiling)
 {
 AG_ObjectLock(win);
 win-&amp;gt;alignment = alignment;
-AG_SETFLAGS(win-&amp;gt;flags, AG_WINDOW_CASCADE, cascade);
+AG_SETFLAGS(win-&amp;gt;flags, AG_WINDOW_TILING, tiling);
 AG_ObjectUnlock(win);
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1822,7 +1813,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 UpdateIconCaption(AG_Window *win)
 {
 AG_Icon *icon = win-&amp;gt;icon;
-char s[16], *c;
+char s[20], *c;
 
 if (Strlcpy(s, win-&amp;gt;caption, sizeof(s)) &amp;gt;= sizeof(s)) {/* Truncate */
 for (c = &amp;amp;s[0]; *c != '\0'; c++) {

Modified: trunk/gui/window.h
===================================================================
--- trunk/gui/window.h2013-05-23 09:45:58 UTC (rev 9600)
+++ trunk/gui/window.h2013-05-24 02:50:07 UTC (rev 9601)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -82,7 +82,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define AG_WINDOW_NOCLOSE0x00000400 /* Disable close button */
 #define AG_WINDOW_NOMINIMIZE0x00000800 /* Disable minimize button */
 #define AG_WINDOW_NOMAXIMIZE0x00001000 /* Disable maximize button */
-#define AG_WINDOW_CASCADE0x00002000 /* Cascade position (read-only) */
+#define AG_WINDOW_TILING0x00002000 /* Subject to WM tiling */
 #define AG_WINDOW_MINSIZEPCT0x00004000 /* Min size is in % (read-only) */
 #define AG_WINDOW_NOBACKGROUND0x00008000 /* Don't fill the background */
 #define AG_WINDOW_MAIN0x00010000 /* Break from AG_EventLoop() on close */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -457,8 +457,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 #ifdef AG_LEGACY
-#define AG_WINDOW_POPUP 0x01000000 /* "Popup" style (WM-dependent) */
-#define AG_WINDOW_DIALOG 0x02000000 /* "Dialog" style (WM-dependent) */
+#define AG_WINDOW_POPUP 0x01000000
+#define AG_WINDOW_DIALOG 0x02000000
+#define AG_WINDOW_CASCADE AG_WINDOW_TILING
 void   AG_WindowSetVisibility(AG_Window *, int) DEPRECATED_ATTRIBUTE;
 AG_Window *AG_FindWindow(const char *) DEPRECATED_ATTRIBUTE;
 void       AG_ViewAttach(AG_Window *) DEPRECATED_ATTRIBUTE;
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-24T02:50:07</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1823">
    <title>Agar: r9600 - trunk/core</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1823</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-23 04:45:58 -0500 (Thu, 23 May 2013)
New Revision: 9600

Modified:
   trunk/core/event.c
Log:
allow prologue/epilogue sinks to be deleted


Modified: trunk/core/event.c
===================================================================
--- trunk/core/event.c2013-05-23 06:07:37 UTC (rev 9599)
+++ trunk/core/event.c2013-05-23 09:45:58 UTC (rev 9600)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -946,12 +946,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 #endif /* HAVE_KQUEUE */
 
-#ifdef AG_DEBUG
-if (es-&amp;gt;type == AG_SINK_PROLOGUE ||
-    es-&amp;gt;type == AG_SINK_EPILOGUE ||
-    es-&amp;gt;type == AG_SINK_SPINNER)
-AG_FatalError("Bad type for AG_DelEventSink");
-#endif
 TAILQ_REMOVE(&amp;amp;src-&amp;gt;sinks, es, sinks);
 free(es);
 }
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-23T09:45:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1822">
    <title>Agar: r9599 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1822</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-23 01:07:37 -0500 (Thu, 23 May 2013)
New Revision: 9599

Modified:
   trunk/gui/drv_wgl_prwincmd.inc
Log:
print to stderr


Modified: trunk/gui/drv_wgl_prwincmd.inc
===================================================================
--- trunk/gui/drv_wgl_prwincmd.inc2013-05-18 06:12:48 UTC (rev 9598)
+++ trunk/gui/drv_wgl_prwincmd.inc2013-05-23 06:07:37 UTC (rev 9599)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,13 +8,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 #define PVAL(a) \
 case (a) : \
-printf("%s", #a); \
+fprintf(stderr, "%s", #a); \
 break;
 
 static void
 WGL_Print_WinMsg(AG_Window *win, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-printf("win %p, ", win);
+fprintf(stderr, "win %p, ", win);
 
 switch (uMsg) {
 PVAL(WM_NULL);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -208,9 +208,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 PVAL(WM_PENWINLAST);
 PVAL(WM_USER);
 default:
-printf("UNKNOWN 0x%04X", uMsg);
+fprintf(stderr, "UNKNOWN 0x%04X", uMsg);
 }
-printf("\n");
+fprintf(stderr, "\n");
+fflush(stderr);
 }
 
 #undef PVAL
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-23T06:07:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1821">
    <title>Agar: r9598 - trunk/tests</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1821</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-18 01:12:48 -0500 (Sat, 18 May 2013)
New Revision: 9598

Modified:
   trunk/tests/configure
   trunk/tests/configure.in
Log:
honor --with-agar prefix


Modified: trunk/tests/configure
===================================================================
--- trunk/tests/configure2013-05-18 05:57:19 UTC (rev 9597)
+++ trunk/tests/configure2013-05-18 06:12:48 UTC (rev 9598)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -384,6 +384,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "    --with-manpages           Generate Unix manual pages [yes]"
 echo ""
 echo "Agar test suite options:"
+echo "    --with-agar[=PREFIX]        Location of Agar library [check]"
 echo "    --enable-warnings           Suggested compiler warnings [no]"
 exit 1
 fi;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1039,9 +1040,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking for Agar (http://libagar.org/)..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_VERSION=`/bin/agar-config --version`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_VERSION=`${prefix_agar}/bin/agar-config --version`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1069,9 +1070,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 fi
 if [ "${AGAR_VERSION}" != "" ]; then
-if [ "" != "" ]; then
-echo "yes ($AGAR_VERSION in )"
-echo "yes ($AGAR_VERSION in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "yes ($AGAR_VERSION in ${prefix_agar})"
+echo "yes ($AGAR_VERSION in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "yes ($AGAR_VERSION)"
 echo "yes ($AGAR_VERSION)" &amp;gt;&amp;gt; config.log
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1109,9 +1110,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking whether Agar works..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_CFLAGS=`/bin/agar-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_CFLAGS=`${prefix_agar}/bin/agar-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1140,9 +1141,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_LIBS=`/bin/agar-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_LIBS=`${prefix_agar}/bin/agar-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1239,9 +1240,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AGAR_LIBS=""
 fi;
 else
-if [ "" != "" ]; then
-echo "no (not in )"
-echo "no (not in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "no (not in ${prefix_agar})"
+echo "no (not in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "no"
 echo "no" &amp;gt;&amp;gt; config.log
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1277,9 +1278,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking for agar-dev (http://libagar.org/)..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-dev-config" ]; then
-AGAR_DEV_VERSION=`/bin/agar-dev-config --version`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-dev-config" ]; then
+AGAR_DEV_VERSION=`${prefix_agar}/bin/agar-dev-config --version`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1307,16 +1308,39 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 fi
 if [ "${AGAR_DEV_VERSION}" != "" ]; then
-if [ "" != "" ]; then
-echo "yes ($AGAR_DEV_VERSION in )"
-echo "yes ($AGAR_DEV_VERSION in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "yes ($AGAR_DEV_VERSION in ${prefix_agar})"
+echo "yes ($AGAR_DEV_VERSION in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "yes ($AGAR_DEV_VERSION)"
 echo "yes ($AGAR_DEV_VERSION)" &amp;gt;&amp;gt; config.log
 fi;
-if [ "" != "" ]; then
+if [ "1.5.0" != "" ]; then
+MK_VERSION_MAJOR=`echo "$AGAR_DEV_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\1/'`;
+MK_VERSION_MINOR=`echo "$AGAR_DEV_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\2/'`;
+MK_VERSION_MICRO=`echo "$AGAR_DEV_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\3/'`;
+MK_VERSION_OK="no"
+if [ $MK_VERSION_MAJOR -gt 1 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MAJOR -eq 1 ]; then
+if [ "$MK_VERSION_MINOR" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MINOR -gt 5 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MINOR -eq 5 ]; then
+if [ "$MK_VERSION_MICRO" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MICRO -ge 0 ]; then
+MK_VERSION_OK="yes"
+fi
+fi
+fi
+fi
+fi
 if [ "${MK_VERSION_OK}" != "yes" ]; then
-echo "Version  or greater is required (found $AGAR_DEV_VERSION)"
+echo "Version 1.5.0 or greater is required (found $AGAR_DEV_VERSION)"
 exit 1
 fi;
 fi;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1324,9 +1348,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking whether Agar-DEV works..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_CFLAGS=`/bin/agar-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_CFLAGS=`${prefix_agar}/bin/agar-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1355,9 +1379,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_LIBS=`/bin/agar-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_LIBS=`${prefix_agar}/bin/agar-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1386,9 +1410,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-dev-config" ]; then
-AGAR_DEV_CFLAGS=`/bin/agar-dev-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-dev-config" ]; then
+AGAR_DEV_CFLAGS=`${prefix_agar}/bin/agar-dev-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1417,9 +1441,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-dev-config" ]; then
-AGAR_DEV_LIBS=`/bin/agar-dev-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-dev-config" ]; then
+AGAR_DEV_LIBS=`${prefix_agar}/bin/agar-dev-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1517,9 +1541,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AGAR_DEV_LIBS=""
 fi;
 else
-if [ "" != "" ]; then
-echo "no (not in )"
-echo "no (not in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "no (not in ${prefix_agar})"
+echo "no (not in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "no"
 echo "no" &amp;gt;&amp;gt; config.log
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1541,13 +1565,25 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "configure failed!"
 exit 1
 fi;
+if [ "${MK_VERSION_OK}" != "yes" ]; then
+echo "* "
+echo "* " &amp;gt;&amp;gt; config.log
+echo "* This software requires agar-dev version &amp;gt;= 1.5.0,"
+echo "* This software requires agar-dev version &amp;gt;= 1.5.0," &amp;gt;&amp;gt; config.log
+echo "* please upgrade and try again."
+echo "* please upgrade and try again." &amp;gt;&amp;gt; config.log
+echo "* "
+echo "* " &amp;gt;&amp;gt; config.log
+echo "configure failed!"
+exit 1
+fi;
 $ECHO_N "checking for Agar-Math library (http://libagar.org/)..."
 $ECHO_N "checking for Agar-Math library (http://libagar.org/)..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-math-config" ]; then
-AGAR_MATH_VERSION=`/bin/agar-math-config --version`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-math-config" ]; then
+AGAR_MATH_VERSION=`${prefix_agar}/bin/agar-math-config --version`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1575,16 +1611,39 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 fi
 if [ "${AGAR_MATH_VERSION}" != "" ]; then
-if [ "" != "" ]; then
-echo "yes ($AGAR_MATH_VERSION in )"
-echo "yes ($AGAR_MATH_VERSION in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "yes ($AGAR_MATH_VERSION in ${prefix_agar})"
+echo "yes ($AGAR_MATH_VERSION in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "yes ($AGAR_MATH_VERSION)"
 echo "yes ($AGAR_MATH_VERSION)" &amp;gt;&amp;gt; config.log
 fi;
-if [ "" != "" ]; then
+if [ "1.5.0" != "" ]; then
+MK_VERSION_MAJOR=`echo "$AGAR_MATH_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\1/'`;
+MK_VERSION_MINOR=`echo "$AGAR_MATH_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\2/'`;
+MK_VERSION_MICRO=`echo "$AGAR_MATH_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\3/'`;
+MK_VERSION_OK="no"
+if [ $MK_VERSION_MAJOR -gt 1 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MAJOR -eq 1 ]; then
+if [ "$MK_VERSION_MINOR" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MINOR -gt 5 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MINOR -eq 5 ]; then
+if [ "$MK_VERSION_MICRO" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MICRO -ge 0 ]; then
+MK_VERSION_OK="yes"
+fi
+fi
+fi
+fi
+fi
 if [ "${MK_VERSION_OK}" != "yes" ]; then
-echo "Version  or greater is required (found $AGAR_MATH_VERSION)"
+echo "Version 1.5.0 or greater is required (found $AGAR_MATH_VERSION)"
 exit 1
 fi;
 fi;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1592,9 +1651,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking whether Agar-Math works..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_CFLAGS=`/bin/agar-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_CFLAGS=`${prefix_agar}/bin/agar-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1623,9 +1682,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_LIBS=`/bin/agar-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_LIBS=`${prefix_agar}/bin/agar-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1654,9 +1713,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-math-config" ]; then
-AGAR_MATH_CFLAGS=`/bin/agar-math-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-math-config" ]; then
+AGAR_MATH_CFLAGS=`${prefix_agar}/bin/agar-math-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1685,9 +1744,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-math-config" ]; then
-AGAR_MATH_LIBS=`/bin/agar-math-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-math-config" ]; then
+AGAR_MATH_LIBS=`${prefix_agar}/bin/agar-math-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1783,9 +1842,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AGAR_MATH_LIBS=""
 fi;
 else
-if [ "" != "" ]; then
-echo "no (not in )"
-echo "no (not in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "no (not in ${prefix_agar})"
+echo "no (not in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "no"
 echo "no" &amp;gt;&amp;gt; config.log
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1807,13 +1866,25 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "configure failed!"
 exit 1
 fi;
+if [ "${MK_VERSION_OK}" != "yes" ]; then
+echo "* "
+echo "* " &amp;gt;&amp;gt; config.log
+echo "* This software requires agar-math version &amp;gt;= 1.5.0,"
+echo "* This software requires agar-math version &amp;gt;= 1.5.0," &amp;gt;&amp;gt; config.log
+echo "* please upgrade and try again."
+echo "* please upgrade and try again." &amp;gt;&amp;gt; config.log
+echo "* "
+echo "* " &amp;gt;&amp;gt; config.log
+echo "configure failed!"
+exit 1
+fi;
 $ECHO_N "checking for agar-vg (http://hypertriton.com/agar-vg/)..."
 $ECHO_N "checking for agar-vg (http://hypertriton.com/agar-vg/)..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-vg-config" ]; then
-AGAR_VG_VERSION=`/bin/agar-vg-config --version`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-vg-config" ]; then
+AGAR_VG_VERSION=`${prefix_agar}/bin/agar-vg-config --version`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1841,16 +1912,39 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 fi
 if [ "${AGAR_VG_VERSION}" != "" ]; then
-if [ "" != "" ]; then
-echo "yes ($AGAR_VG_VERSION in )"
-echo "yes ($AGAR_VG_VERSION in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "yes ($AGAR_VG_VERSION in ${prefix_agar})"
+echo "yes ($AGAR_VG_VERSION in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "yes ($AGAR_VG_VERSION)"
 echo "yes ($AGAR_VG_VERSION)" &amp;gt;&amp;gt; config.log
 fi;
-if [ "" != "" ]; then
+if [ "1.5.0" != "" ]; then
+MK_VERSION_MAJOR=`echo "$AGAR_VG_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\1/'`;
+MK_VERSION_MINOR=`echo "$AGAR_VG_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\2/'`;
+MK_VERSION_MICRO=`echo "$AGAR_VG_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\3/'`;
+MK_VERSION_OK="no"
+if [ $MK_VERSION_MAJOR -gt 1 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MAJOR -eq 1 ]; then
+if [ "$MK_VERSION_MINOR" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MINOR -gt 5 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MINOR -eq 5 ]; then
+if [ "$MK_VERSION_MICRO" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MICRO -ge 0 ]; then
+MK_VERSION_OK="yes"
+fi
+fi
+fi
+fi
+fi
 if [ "${MK_VERSION_OK}" != "yes" ]; then
-echo "Version  or greater is required (found $AGAR_VG_VERSION)"
+echo "Version 1.5.0 or greater is required (found $AGAR_VG_VERSION)"
 exit 1
 fi;
 fi;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1858,9 +1952,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking whether agar-vg works..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_CFLAGS=`/bin/agar-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_CFLAGS=`${prefix_agar}/bin/agar-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1889,9 +1983,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_LIBS=`/bin/agar-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_LIBS=`${prefix_agar}/bin/agar-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1920,9 +2014,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-vg-config" ]; then
-AGAR_VG_CFLAGS=`/bin/agar-vg-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-vg-config" ]; then
+AGAR_VG_CFLAGS=`${prefix_agar}/bin/agar-vg-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1951,9 +2045,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-vg-config" ]; then
-AGAR_VG_LIBS=`/bin/agar-vg-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-vg-config" ]; then
+AGAR_VG_LIBS=`${prefix_agar}/bin/agar-vg-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2046,9 +2140,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AGAR_VG_LIBS=""
 fi;
 else
-if [ "" != "" ]; then
-echo "no (not in )"
-echo "no (not in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "no (not in ${prefix_agar})"
+echo "no (not in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "no"
 echo "no" &amp;gt;&amp;gt; config.log
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2064,9 +2158,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking for agar-au (http://libagar.org/)..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-au-config" ]; then
-AGAR_AU_VERSION=`/bin/agar-au-config --version`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-au-config" ]; then
+AGAR_AU_VERSION=`${prefix_agar}/bin/agar-au-config --version`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2094,16 +2188,39 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 fi
 if [ "${AGAR_AU_VERSION}" != "" ]; then
-if [ "" != "" ]; then
-echo "yes ($AGAR_AU_VERSION in )"
-echo "yes ($AGAR_AU_VERSION in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "yes ($AGAR_AU_VERSION in ${prefix_agar})"
+echo "yes ($AGAR_AU_VERSION in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "yes ($AGAR_AU_VERSION)"
 echo "yes ($AGAR_AU_VERSION)" &amp;gt;&amp;gt; config.log
 fi;
-if [ "" != "" ]; then
+if [ "1.5.0" != "" ]; then
+MK_VERSION_MAJOR=`echo "$AGAR_AU_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\1/'`;
+MK_VERSION_MINOR=`echo "$AGAR_AU_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\2/'`;
+MK_VERSION_MICRO=`echo "$AGAR_AU_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\3/'`;
+MK_VERSION_OK="no"
+if [ $MK_VERSION_MAJOR -gt 1 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MAJOR -eq 1 ]; then
+if [ "$MK_VERSION_MINOR" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MINOR -gt 5 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MINOR -eq 5 ]; then
+if [ "$MK_VERSION_MICRO" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MICRO -ge 0 ]; then
+MK_VERSION_OK="yes"
+fi
+fi
+fi
+fi
+fi
 if [ "${MK_VERSION_OK}" != "yes" ]; then
-echo "Version  or greater is required (found $AGAR_AU_VERSION)"
+echo "Version 1.5.0 or greater is required (found $AGAR_AU_VERSION)"
 exit 1
 fi;
 fi;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2111,9 +2228,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $ECHO_N "checking whether agar-au works..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_CFLAGS=`/bin/agar-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_CFLAGS=`${prefix_agar}/bin/agar-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2142,9 +2259,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_LIBS=`/bin/agar-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-config" ]; then
+AGAR_LIBS=`${prefix_agar}/bin/agar-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2173,9 +2290,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-au-config" ]; then
-AGAR_AU_CFLAGS=`/bin/agar-au-config --cflags`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-au-config" ]; then
+AGAR_AU_CFLAGS=`${prefix_agar}/bin/agar-au-config --cflags`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2204,9 +2321,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 fi
 MK_EXEC_FOUND="No"
 
-if [ "" != "" ]; then
-if [ -e "/bin/agar-au-config" ]; then
-AGAR_AU_LIBS=`/bin/agar-au-config --libs`
+if [ "${prefix_agar}" != "" ]; then
+if [ -e "${prefix_agar}/bin/agar-au-config" ]; then
+AGAR_AU_LIBS=`${prefix_agar}/bin/agar-au-config --libs`
 MK_EXEC_FOUND="Yes"
 fi
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2299,9 +2416,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AGAR_AU_LIBS=""
 fi;
 else
-if [ "" != "" ]; then
-echo "no (not in )"
-echo "no (not in )" &amp;gt;&amp;gt; config.log
+if [ "${prefix_agar}" != "" ]; then
+echo "no (not in ${prefix_agar})"
+echo "no (not in ${prefix_agar})" &amp;gt;&amp;gt; config.log
 else
 echo "no"
 echo "no" &amp;gt;&amp;gt; config.log

Modified: trunk/tests/configure.in
===================================================================
--- trunk/tests/configure.in2013-05-18 05:57:19 UTC (rev 9597)
+++ trunk/tests/configure.in2013-05-18 06:12:48 UTC (rev 9598)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,18 +3,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 CONFIG_GUESS("../mk/config.guess")
 
 REGISTER_SECTION("Agar test suite options:")
+REGISTER("--with-agar[=PREFIX]","Location of Agar library [check]")
 REGISTER("--enable-warnings","Suggested compiler warnings [no]")
 
 DEFAULT_DIR(DATADIR, "${PREFIX}/share/agartest")
 DEFAULT_DIR(LOCALEDIR, "${DATADIR}/locale")
 
 REQUIRE(cc)
-REQUIRE(agar, 1.5.0)
-REQUIRE(agar-dev)
-REQUIRE(agar-math)
-
-CHECK(agar-vg)
-CHECK(agar-au)
+REQUIRE(agar, 1.5.0, ${prefix_agar})
+REQUIRE(agar-dev, 1.5.0, ${prefix_agar})
+REQUIRE(agar-math, 1.5.0, ${prefix_agar})
+CHECK(agar-vg, 1.5.0, ${prefix_agar})
+CHECK(agar-au, 1.5.0, ${prefix_agar})
 CHECK(rand48)
 
 C_INCDIR($SRC)
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-18T06:12:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1820">
    <title>Agar: r9597 - trunk</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1820</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-18 00:57:19 -0500 (Sat, 18 May 2013)
New Revision: 9597

Modified:
   trunk/configure
   trunk/configure.in
Log:
check for libpng &amp;gt;= 1.5.0


Modified: trunk/configure
===================================================================
--- trunk/configure2013-05-18 05:56:38 UTC (rev 9596)
+++ trunk/configure2013-05-18 05:57:19 UTC (rev 9597)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4278,7 +4278,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #endif
 t0 = timeGetTime();
 Sleep(1);
-return (to != 0) ? 0 : 1;
+return (t0 != 0) ? 0 : 1;
 }
 
 EOT
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6993,9 +6993,32 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "yes ($PNG_VERSION)"
 echo "yes ($PNG_VERSION)" &amp;gt;&amp;gt; config.log
 fi;
-if [ "0" != "" ]; then
+if [ "1.5.0" != "" ]; then
+MK_VERSION_MAJOR=`echo "$PNG_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\1/'`;
+MK_VERSION_MINOR=`echo "$PNG_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\2/'`;
+MK_VERSION_MICRO=`echo "$PNG_VERSION" |sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).*/\3/'`;
+MK_VERSION_OK="no"
+if [ $MK_VERSION_MAJOR -gt 1 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MAJOR -eq 1 ]; then
+if [ "$MK_VERSION_MINOR" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MINOR -gt 5 ]; then
+MK_VERSION_OK="yes";
+elif [ $MK_VERSION_MINOR -eq 5 ]; then
+if [ "$MK_VERSION_MICRO" = "" ]; then
+MK_VERSION_OK="yes"
+else
+if [ $MK_VERSION_MICRO -ge 0 ]; then
+MK_VERSION_OK="yes"
+fi
+fi
+fi
+fi
+fi
 if [ "${MK_VERSION_OK}" != "yes" ]; then
-echo "Version 0 or greater is required (found $PNG_VERSION)"
+echo "Version 1.5.0 or greater is required (found $PNG_VERSION)"
 exit 1
 fi;
 fi;

Modified: trunk/configure.in
===================================================================
--- trunk/configure.in2013-05-18 05:56:38 UTC (rev 9596)
+++ trunk/configure.in2013-05-18 05:57:19 UTC (rev 9597)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -328,7 +328,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 # Enable PNG format support if libpng is found.
 if [ "${with_png}" != "no" ]; then
-CHECK(png, 0, ${prefix_png})
+CHECK(png, 1.5.0, ${prefix_png})
 if [ "${HAVE_PNG}" != "yes" ]; then
 if [ "${with_png}" = "yes" ]; then
 echo "*"
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-18T05:57:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1819">
    <title>Agar: r9596 - trunk/core</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1819</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-18 00:56:38 -0500 (Sat, 18 May 2013)
New Revision: 9596

Modified:
   trunk/core/net.h
Log:
+ agNetOps_dummy


Modified: trunk/core/net.h
===================================================================
--- trunk/core/net.h2013-05-16 11:30:24 UTC (rev 9595)
+++ trunk/core/net.h2013-05-18 05:56:38 UTC (rev 9596)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -147,6 +147,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 extern const AG_NetOps  agNetOps_bsd;
 extern const AG_NetOps  agNetOps_winsock1;
 extern const AG_NetOps  agNetOps_winsock2;
+extern const AG_NetOps  agNetOps_dummy;
 
 extern const char *agNetAddrFamilyNames[];
 extern const char *agNetSocketTypeNames[];
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-18T05:56:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1818">
    <title>Agar: r9595 - trunk/core</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1818</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-16 06:30:24 -0500 (Thu, 16 May 2013)
New Revision: 9595

Modified:
   trunk/core/object.c
Log:
fix buffer size check in AG_ObjectCopyName()



Modified: trunk/core/object.c
===================================================================
--- trunk/core/object.c2013-05-16 06:09:39 UTC (rev 9594)
+++ trunk/core/object.c2013-05-16 11:30:24 UTC (rev 9595)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -209,20 +209,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 AG_ObjectLock(ob);
 
-cur_len = strlen(path)+1;
-name_len = strlen(ob-&amp;gt;name)+1;
+cur_len = strlen(path);
+name_len = strlen(ob-&amp;gt;name);
 
-if (sizeof("/")+name_len+sizeof("/")+cur_len &amp;gt;= path_len) {
-AG_SetError(_("The path exceeds &amp;gt;= %lu bytes."),
-    (unsigned long)path_len);
+if (name_len+cur_len+1 &amp;gt; path_len) {
+AG_SetError("Path buffer is %lu bytes (required = %lu)",
+    path_len, name_len+cur_len+1);
 AG_ObjectUnlock(ob);
 return (-1);
 }
 
 /* Prepend / and the object name. */
-memmove(&amp;amp;path[name_len], path, cur_len);    /* Move the NUL as well */
+memmove(&amp;amp;path[name_len+1], path, cur_len+1);    /* Move the NUL as well */
 path[0] = AG_PATHSEPCHAR;
-memcpy(&amp;amp;path[1], ob-&amp;gt;name, name_len-1);    /* Omit the NUL */
+memcpy(&amp;amp;path[1], ob-&amp;gt;name, name_len);/* Omit the NUL */
 
 if (ob-&amp;gt;parent != ob-&amp;gt;root &amp;amp;&amp;amp; ob-&amp;gt;parent != NULL) {
 rv = GenerateObjectPath(ob-&amp;gt;parent, path, path_len);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -234,7 +234,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 /*
  * Copy the absolute pathname of an object to a fixed-size buffer.
- * The buffer size must be &amp;gt;2 bytes.
+ * Buffer size must be at least 2 bytes in size.
  */
 int
 AG_ObjectCopyName(void *obj, char *path, size_t path_len)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -242,6 +242,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_Object *ob = obj;
 int rv = 0;
 
+if (path_len &amp;lt; 2) {
+AG_SetError("Buffer too small");
+return (-1);
+}
 path[0] = AG_PATHSEPCHAR;
 path[1] = '\0';
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-16T11:30:24</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1817">
    <title>Agar: r9594 - trunk/tests</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1817</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-16 01:09:39 -0500 (Thu, 16 May 2013)
New Revision: 9594

Modified:
   trunk/tests/configure
   trunk/tests/configure.in
Log:
- agar-rg



Modified: trunk/tests/configure
===================================================================
--- trunk/tests/configure2013-05-04 01:40:16 UTC (rev 9593)
+++ trunk/tests/configure2013-05-16 06:09:39 UTC (rev 9594)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2060,262 +2060,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "#undef AGAR_VG_LIBS" &amp;gt;$BLD/config/agar_vg_libs.h
 echo "hdefs[\"AGAR_VG_LIBS\"] = nil" &amp;gt;&amp;gt;configure.lua
 fi;
-$ECHO_N "checking for agar-rg (http://hypertriton.com/agar-rg/)..."
-$ECHO_N "checking for agar-rg (http://hypertriton.com/agar-rg/)..." &amp;gt;&amp;gt; config.log
-MK_EXEC_FOUND="No"
-
-if [ "" != "" ]; then
-if [ -e "/bin/agar-rg-config" ]; then
-AGAR_RG_VERSION=`/bin/agar-rg-config --version`
-MK_EXEC_FOUND="Yes"
-fi
-else
-MK_CACHED="No"
-if [ "${cache}" != "" ]; then
-if [ -e "${cache}/exec-AGAR_RG_VERSION" ]; then
-AGAR_RG_VERSION=`cat ${cache}/exec-AGAR_RG_VERSION`
-MK_EXEC_FOUND=`cat ${cache}/exec-found-AGAR_RG_VERSION`
-MK_CACHED="Yes"
-fi
-fi
-if [ "${MK_CACHED}" = "No" ]; then
-AGAR_RG_VERSION=""
-for path in `echo $PATH | sed 's/:/ /g'`; do
-if [ -e "${path}/agar-rg-config" ]; then
-AGAR_RG_VERSION=`${path}/agar-rg-config --version`
-MK_EXEC_FOUND="Yes"
-break
-fi
-done
-if [ "${cache}" != "" ]; then
-echo "$AGAR_RG_VERSION" &amp;gt; ${cache}/exec-AGAR_RG_VERSION
-echo $MK_EXEC_FOUND &amp;gt; ${cache}/exec-found-AGAR_RG_VERSION
-fi
-fi
-fi
-if [ "${AGAR_RG_VERSION}" != "" ]; then
-if [ "" != "" ]; then
-echo "yes ($AGAR_RG_VERSION in )"
-echo "yes ($AGAR_RG_VERSION in )" &amp;gt;&amp;gt; config.log
-else
-echo "yes ($AGAR_RG_VERSION)"
-echo "yes ($AGAR_RG_VERSION)" &amp;gt;&amp;gt; config.log
-fi;
-if [ "" != "" ]; then
-if [ "${MK_VERSION_OK}" != "yes" ]; then
-echo "Version  or greater is required (found $AGAR_RG_VERSION)"
-exit 1
-fi;
-fi;
-$ECHO_N "checking whether Agar-RG works..."
-$ECHO_N "checking whether Agar-RG works..." &amp;gt;&amp;gt; config.log
-MK_EXEC_FOUND="No"
-
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_CFLAGS=`/bin/agar-config --cflags`
-MK_EXEC_FOUND="Yes"
-fi
-else
-MK_CACHED="No"
-if [ "${cache}" != "" ]; then
-if [ -e "${cache}/exec-AGAR_CFLAGS" ]; then
-AGAR_CFLAGS=`cat ${cache}/exec-AGAR_CFLAGS`
-MK_EXEC_FOUND=`cat ${cache}/exec-found-AGAR_CFLAGS`
-MK_CACHED="Yes"
-fi
-fi
-if [ "${MK_CACHED}" = "No" ]; then
-AGAR_CFLAGS=""
-for path in `echo $PATH | sed 's/:/ /g'`; do
-if [ -e "${path}/agar-config" ]; then
-AGAR_CFLAGS=`${path}/agar-config --cflags`
-MK_EXEC_FOUND="Yes"
-break
-fi
-done
-if [ "${cache}" != "" ]; then
-echo "$AGAR_CFLAGS" &amp;gt; ${cache}/exec-AGAR_CFLAGS
-echo $MK_EXEC_FOUND &amp;gt; ${cache}/exec-found-AGAR_CFLAGS
-fi
-fi
-fi
-MK_EXEC_FOUND="No"
-
-if [ "" != "" ]; then
-if [ -e "/bin/agar-config" ]; then
-AGAR_LIBS=`/bin/agar-config --libs`
-MK_EXEC_FOUND="Yes"
-fi
-else
-MK_CACHED="No"
-if [ "${cache}" != "" ]; then
-if [ -e "${cache}/exec-AGAR_LIBS" ]; then
-AGAR_LIBS=`cat ${cache}/exec-AGAR_LIBS`
-MK_EXEC_FOUND=`cat ${cache}/exec-found-AGAR_LIBS`
-MK_CACHED="Yes"
-fi
-fi
-if [ "${MK_CACHED}" = "No" ]; then
-AGAR_LIBS=""
-for path in `echo $PATH | sed 's/:/ /g'`; do
-if [ -e "${path}/agar-config" ]; then
-AGAR_LIBS=`${path}/agar-config --libs`
-MK_EXEC_FOUND="Yes"
-break
-fi
-done
-if [ "${cache}" != "" ]; then
-echo "$AGAR_LIBS" &amp;gt; ${cache}/exec-AGAR_LIBS
-echo $MK_EXEC_FOUND &amp;gt; ${cache}/exec-found-AGAR_LIBS
-fi
-fi
-fi
-MK_EXEC_FOUND="No"
-
-if [ "" != "" ]; then
-if [ -e "/bin/agar-rg-config" ]; then
-AGAR_RG_CFLAGS=`/bin/agar-rg-config --cflags`
-MK_EXEC_FOUND="Yes"
-fi
-else
-MK_CACHED="No"
-if [ "${cache}" != "" ]; then
-if [ -e "${cache}/exec-AGAR_RG_CFLAGS" ]; then
-AGAR_RG_CFLAGS=`cat ${cache}/exec-AGAR_RG_CFLAGS`
-MK_EXEC_FOUND=`cat ${cache}/exec-found-AGAR_RG_CFLAGS`
-MK_CACHED="Yes"
-fi
-fi
-if [ "${MK_CACHED}" = "No" ]; then
-AGAR_RG_CFLAGS=""
-for path in `echo $PATH | sed 's/:/ /g'`; do
-if [ -e "${path}/agar-rg-config" ]; then
-AGAR_RG_CFLAGS=`${path}/agar-rg-config --cflags`
-MK_EXEC_FOUND="Yes"
-break
-fi
-done
-if [ "${cache}" != "" ]; then
-echo "$AGAR_RG_CFLAGS" &amp;gt; ${cache}/exec-AGAR_RG_CFLAGS
-echo $MK_EXEC_FOUND &amp;gt; ${cache}/exec-found-AGAR_RG_CFLAGS
-fi
-fi
-fi
-MK_EXEC_FOUND="No"
-
-if [ "" != "" ]; then
-if [ -e "/bin/agar-rg-config" ]; then
-AGAR_RG_LIBS=`/bin/agar-rg-config --libs`
-MK_EXEC_FOUND="Yes"
-fi
-else
-MK_CACHED="No"
-if [ "${cache}" != "" ]; then
-if [ -e "${cache}/exec-AGAR_RG_LIBS" ]; then
-AGAR_RG_LIBS=`cat ${cache}/exec-AGAR_RG_LIBS`
-MK_EXEC_FOUND=`cat ${cache}/exec-found-AGAR_RG_LIBS`
-MK_CACHED="Yes"
-fi
-fi
-if [ "${MK_CACHED}" = "No" ]; then
-AGAR_RG_LIBS=""
-for path in `echo $PATH | sed 's/:/ /g'`; do
-if [ -e "${path}/agar-rg-config" ]; then
-AGAR_RG_LIBS=`${path}/agar-rg-config --libs`
-MK_EXEC_FOUND="Yes"
-break
-fi
-done
-if [ "${cache}" != "" ]; then
-echo "$AGAR_RG_LIBS" &amp;gt; ${cache}/exec-AGAR_RG_LIBS
-echo $MK_EXEC_FOUND &amp;gt; ${cache}/exec-found-AGAR_RG_LIBS
-fi
-fi
-fi
-MK_CACHED="No"
-MK_COMPILE_STATUS="OK"
-if [ "${cache}" != "" ]; then
-if [ -e "${cache}/ctest-HAVE_AGAR_RG" ]; then
-HAVE_AGAR_RG=`cat ${cache}/ctest-HAVE_AGAR_RG`
-MK_COMPILE_STATUS=`cat ${cache}/ctest-status-HAVE_AGAR_RG`
-MK_CACHED="Yes"
-fi
-fi
-if [ "${MK_CACHED}" = "No" ]; then
-cat &amp;lt;&amp;lt; EOT &amp;gt; conftest.c
-#include &amp;lt;agar/core.h&amp;gt;
-#include &amp;lt;agar/gui.h&amp;gt;
-#include &amp;lt;agar/rg.h&amp;gt;
-
-int main(int argc, char *argv[]) {
-RG_Tileset *ts;
-
-ts = RG_TilesetNew(NULL, "foo", 0);
-AG_ObjectDestroy(ts);
-return (0);
-}
-
-EOT
-echo "$CC $CFLAGS $TEST_CFLAGS ${AGAR_RG_CFLAGS} ${AGAR_CFLAGS} -o $testdir/conftest conftest.c ${AGAR_RG_LIBS} ${AGAR_LIBS}" &amp;gt;&amp;gt;config.log
-$CC $CFLAGS $TEST_CFLAGS ${AGAR_RG_CFLAGS} ${AGAR_CFLAGS} -o $testdir/conftest conftest.c ${AGAR_RG_LIBS} ${AGAR_LIBS} 2&amp;gt;&amp;gt;config.log
-if [ $? != 0 ]; then
-echo "-&amp;gt; failed ($?)" &amp;gt;&amp;gt; config.log
-MK_COMPILE_STATUS="FAIL($?)"
-fi
-fi
-if [ "${MK_COMPILE_STATUS}" = "OK" ]; then
-echo "yes"
-echo "yes" &amp;gt;&amp;gt; config.log
-HAVE_AGAR_RG="yes"
-echo "#ifndef HAVE_AGAR_RG" &amp;gt; $BLD/config/have_agar_rg.h
-echo "#define HAVE_AGAR_RG \"$HAVE_AGAR_RG\"" &amp;gt;&amp;gt; $BLD/config/have_agar_rg.h
-echo "#endif" &amp;gt;&amp;gt; $BLD/config/have_agar_rg.h
-echo "hdefs[\"HAVE_AGAR_RG\"] = \"$HAVE_AGAR_RG\"" &amp;gt;&amp;gt;configure.lua
-else
-echo "no"
-echo "no" &amp;gt;&amp;gt; config.log
-HAVE_AGAR_RG="no"
-echo "#undef HAVE_AGAR_RG" &amp;gt;$BLD/config/have_agar_rg.h
-echo "hdefs[\"HAVE_AGAR_RG\"] = nil" &amp;gt;&amp;gt;configure.lua
-fi;
-if [ "${cache}" != "" ]; then
-echo "$HAVE_AGAR_RG" &amp;gt; ${cache}/ctest-HAVE_AGAR_RG
-echo $MK_COMPILE_STATUS &amp;gt; ${cache}/ctest-status-HAVE_AGAR_RG
-fi
-rm -f conftest.c $testdir/conftest$EXECSUFFIX
-if [ "${HAVE_AGAR_RG}" = "yes" ]; then
-echo "#ifndef AGAR_RG_CFLAGS" &amp;gt; $BLD/config/agar_rg_cflags.h
-echo "#define AGAR_RG_CFLAGS \"$AGAR_RG_CFLAGS\"" &amp;gt;&amp;gt; $BLD/config/agar_rg_cflags.h
-echo "#endif" &amp;gt;&amp;gt; $BLD/config/agar_rg_cflags.h
-echo "hdefs[\"AGAR_RG_CFLAGS\"] = \"$AGAR_RG_CFLAGS\"" &amp;gt;&amp;gt;configure.lua
-echo "#ifndef AGAR_RG_LIBS" &amp;gt; $BLD/config/agar_rg_libs.h
-echo "#define AGAR_RG_LIBS \"$AGAR_RG_LIBS\"" &amp;gt;&amp;gt; $BLD/config/agar_rg_libs.h
-echo "#endif" &amp;gt;&amp;gt; $BLD/config/agar_rg_libs.h
-echo "hdefs[\"AGAR_RG_LIBS\"] = \"$AGAR_RG_LIBS\"" &amp;gt;&amp;gt;configure.lua
-else
-echo "#undef AGAR_RG_CFLAGS" &amp;gt;$BLD/config/agar_rg_cflags.h
-echo "hdefs[\"AGAR_RG_CFLAGS\"] = nil" &amp;gt;&amp;gt;configure.lua
-AGAR_RG_CFLAGS=""
-echo "#undef AGAR_RG_LIBS" &amp;gt;$BLD/config/agar_rg_libs.h
-echo "hdefs[\"AGAR_RG_LIBS\"] = nil" &amp;gt;&amp;gt;configure.lua
-AGAR_RG_LIBS=""
-fi;
-else
-if [ "" != "" ]; then
-echo "no (not in )"
-echo "no (not in )" &amp;gt;&amp;gt; config.log
-else
-echo "no"
-echo "no" &amp;gt;&amp;gt; config.log
-fi;
-echo "#undef HAVE_AGAR_RG" &amp;gt;$BLD/config/have_agar_rg.h
-echo "hdefs[\"HAVE_AGAR_RG\"] = nil" &amp;gt;&amp;gt;configure.lua
-echo "#undef AGAR_RG_CFLAGS" &amp;gt;$BLD/config/agar_rg_cflags.h
-echo "hdefs[\"AGAR_RG_CFLAGS\"] = nil" &amp;gt;&amp;gt;configure.lua
-echo "#undef AGAR_RG_LIBS" &amp;gt;$BLD/config/agar_rg_libs.h
-echo "hdefs[\"AGAR_RG_LIBS\"] = nil" &amp;gt;&amp;gt;configure.lua
-fi;
 $ECHO_N "checking for agar-au (http://libagar.org/)..."
 $ECHO_N "checking for agar-au (http://libagar.org/)..." &amp;gt;&amp;gt; config.log
 MK_EXEC_FOUND="No"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2675,8 +2419,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "mdefs[\"CFLAGS\"] = \"$CFLAGS\"" &amp;gt;&amp;gt;configure.lua
 echo "MANDIR=$MANDIR" &amp;gt;&amp;gt;Makefile.config
 echo "mdefs[\"MANDIR\"] = \"$MANDIR\"" &amp;gt;&amp;gt;configure.lua
-echo "HAVE_AGAR_RG=$HAVE_AGAR_RG" &amp;gt;&amp;gt;Makefile.config
-echo "mdefs[\"HAVE_AGAR_RG\"] = \"$HAVE_AGAR_RG\"" &amp;gt;&amp;gt;configure.lua
 echo "AGAR_VG_CFLAGS=$AGAR_VG_CFLAGS" &amp;gt;&amp;gt;Makefile.config
 echo "mdefs[\"AGAR_VG_CFLAGS\"] = \"$AGAR_VG_CFLAGS\"" &amp;gt;&amp;gt;configure.lua
 echo "HAVE_CYGWIN=$HAVE_CYGWIN" &amp;gt;&amp;gt;Makefile.config
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2711,8 +2453,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "mdefs[\"AGAR_MATH_LIBS\"] = \"$AGAR_MATH_LIBS\"" &amp;gt;&amp;gt;configure.lua
 echo "AGAR_AU_CFLAGS=$AGAR_AU_CFLAGS" &amp;gt;&amp;gt;Makefile.config
 echo "mdefs[\"AGAR_AU_CFLAGS\"] = \"$AGAR_AU_CFLAGS\"" &amp;gt;&amp;gt;configure.lua
-echo "AGAR_RG_LIBS=$AGAR_RG_LIBS" &amp;gt;&amp;gt;Makefile.config
-echo "mdefs[\"AGAR_RG_LIBS\"] = \"$AGAR_RG_LIBS\"" &amp;gt;&amp;gt;configure.lua
 echo "HAVE_AGAR=$HAVE_AGAR" &amp;gt;&amp;gt;Makefile.config
 echo "mdefs[\"HAVE_AGAR\"] = \"$HAVE_AGAR\"" &amp;gt;&amp;gt;configure.lua
 echo "MODULEDIR=$MODULEDIR" &amp;gt;&amp;gt;Makefile.config
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2721,8 +2461,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 echo "mdefs[\"HAVE_AGAR_DEV\"] = \"$HAVE_AGAR_DEV\"" &amp;gt;&amp;gt;configure.lua
 echo "AGAR_VG_LIBS=$AGAR_VG_LIBS" &amp;gt;&amp;gt;Makefile.config
 echo "mdefs[\"AGAR_VG_LIBS\"] = \"$AGAR_VG_LIBS\"" &amp;gt;&amp;gt;configure.lua
-echo "AGAR_RG_CFLAGS=$AGAR_RG_CFLAGS" &amp;gt;&amp;gt;Makefile.config
-echo "mdefs[\"AGAR_RG_CFLAGS\"] = \"$AGAR_RG_CFLAGS\"" &amp;gt;&amp;gt;configure.lua
 if [ "${srcdir}" != "" ]; then
 $ECHO_N "* Source is in ${srcdir}. Generating Makefiles..."
 ${PERL} ${SRC}/mk/mkconcurrent.pl ${SRC}

Modified: trunk/tests/configure.in
===================================================================
--- trunk/tests/configure.in2013-05-04 01:40:16 UTC (rev 9593)
+++ trunk/tests/configure.in2013-05-16 06:09:39 UTC (rev 9594)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -14,7 +14,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 REQUIRE(agar-math)
 
 CHECK(agar-vg)
-CHECK(agar-rg)
 CHECK(agar-au)
 CHECK(rand48)
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-16T06:09:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1816">
    <title>Agar: r9593 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1816</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-05-03 20:40:16 -0500 (Fri, 03 May 2013)
New Revision: 9593

Modified:
   trunk/gui/window.h
Log:
don't check invisible windows in WindowDrawQueued()



Modified: trunk/gui/window.h
===================================================================
--- trunk/gui/window.h2013-04-22 01:12:00 UTC (rev 9592)
+++ trunk/gui/window.h2013-05-04 01:40:16 UTC (rev 9593)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -296,7 +296,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 break;
 case AG_WM_SINGLE:
 AG_FOREACH_WINDOW(win, drv) {
-if (win-&amp;gt;dirty)
+if (win-&amp;gt;visible &amp;amp;&amp;amp; win-&amp;gt;dirty)
 break;
 }
 if (win != NULL) {
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-05-04T01:40:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1815">
    <title>Agar: r9592 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1815</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-21 20:12:00 -0500 (Sun, 21 Apr 2013)
New Revision: 9592

Modified:
   trunk/gui/text.c
Log:
AG_Timeout -&amp;gt; AG_Timer



Modified: trunk/gui/text.c
===================================================================
--- trunk/gui/text.c2013-04-22 01:07:54 UTC (rev 9591)
+++ trunk/gui/text.c2013-04-22 01:12:00 UTC (rev 9592)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1435,7 +1435,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 {
 AG_Window *win;
 AG_VBox *vb;
-AG_Timeout *to;
+AG_Timer *to;
 
 win = AG_WindowNew(AG_WINDOW_NORESIZE|AG_WINDOW_NOCLOSE|
                    AG_WINDOW_NOMINIMIZE|AG_WINDOW_NOMAXIMIZE);
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-22T01:12:00</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1814">
    <title>Agar: r9591 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1814</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-21 20:07:54 -0500 (Sun, 21 Apr 2013)
New Revision: 9591

Modified:
   trunk/gui/gui.h
Log:
don't mark the old AG_VIDEO_* flags deprecated, AG_InitVideoSDL() 
still uses them.



Modified: trunk/gui/gui.h
===================================================================
--- trunk/gui/gui.h2013-04-22 01:04:27 UTC (rev 9590)
+++ trunk/gui/gui.h2013-04-22 01:07:54 UTC (rev 9591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -9,23 +9,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define AG_ZOOM_RANGE14/* Number of default zoom settings */
 #define AG_ZOOM_DEFAULT5/* Initial zoom setting (1.0) */
 
-#ifdef AG_LEGACY
 /* For old AG_InitVideo() interface */
-# define AG_VIDEO_HWSURFACE     0x0001
-# define AG_VIDEO_ASYNCBLIT     0x0002
-# define AG_VIDEO_ANYFORMAT     0x0004
-# define AG_VIDEO_HWPALETTE     0x0008
-# define AG_VIDEO_DOUBLEBUF     0x0010
-# define AG_VIDEO_FULLSCREEN    0x0020
-# define AG_VIDEO_RESIZABLE     0x0040
-# define AG_VIDEO_NOFRAME       0x0080
-# define AG_VIDEO_BGPOPUPMENU   0x0100
-# define AG_VIDEO_OPENGL0x0200
-# define AG_VIDEO_OPENGL_OR_SDL 0x0400
-# define AG_VIDEO_NOBGCLEAR     0x0800
-# define AG_VIDEO_OVERLAY       0x1000
-# define AG_VIDEO_SDL           0x2000
-#endif /* AG_LEGACY */
+#define AG_VIDEO_HWSURFACE     0x0001
+#define AG_VIDEO_ASYNCBLIT     0x0002
+#define AG_VIDEO_ANYFORMAT     0x0004
+#define AG_VIDEO_HWPALETTE     0x0008
+#define AG_VIDEO_DOUBLEBUF     0x0010
+#define AG_VIDEO_FULLSCREEN    0x0020
+#define AG_VIDEO_RESIZABLE     0x0040
+#define AG_VIDEO_NOFRAME       0x0080
+#define AG_VIDEO_BGPOPUPMENU   0x0100
+#define AG_VIDEO_OPENGL       0x0200
+#define AG_VIDEO_OPENGL_OR_SDL 0x0400
+#define AG_VIDEO_NOBGCLEAR     0x0800
+#define AG_VIDEO_OVERLAY       0x1000
+#define AG_VIDEO_SDL           0x2000
 
 __BEGIN_DECLS
 /* Global configuration settings (bound to agConfig) */
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-22T01:07:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1813">
    <title>Agar: r9590 - trunk/core</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1813</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-21 20:04:27 -0500 (Sun, 21 Apr 2013)
New Revision: 9590

Modified:
   trunk/core/event.c
Log:
don't use the deprecated AG_Timeout type



Modified: trunk/core/event.c
===================================================================
--- trunk/core/event.c2013-04-21 03:56:39 UTC (rev 9589)
+++ trunk/core/event.c2013-04-22 01:04:27 UTC (rev 9590)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1085,10 +1085,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * Add/remove a kqueue(2) based timer.
  */
 static int
-GenerateTimerID(AG_Timeout *to)
+GenerateTimerID(AG_Timer *to)
 {
 AG_Object *obOther;
-AG_Timeout *toOther;
+AG_Timer *toOther;
 int id;
 
 gen_id:
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-22T01:04:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1812">
    <title>Agar: r9589 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1812</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-20 22:56:39 -0500 (Sat, 20 Apr 2013)
New Revision: 9589

Modified:
   trunk/gui/text.c
Log:
Use FcPatternDestroy() to avoid crashing on fontconfig assertions; thanks pi31415!

PR:202


Modified: trunk/gui/text.c
===================================================================
--- trunk/gui/text.c2013-04-21 03:51:54 UTC (rev 9588)
+++ trunk/gui/text.c2013-04-21 03:56:39 UTC (rev 9589)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -381,6 +381,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 spec-&amp;gt;matrix.yx = mat-&amp;gt;yx;
 }
 spec-&amp;gt;type = AG_FONT_VECTOR;
+FcPatternDestroy(fpat);
+FcPatternDestroy(pattern);
 } else
 #endif /* HAVE_FONTCONFIG */
 {
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-21T03:56:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1811">
    <title>Agar: r9588 - trunk/core</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1811</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-20 22:51:54 -0500 (Sat, 20 Apr 2013)
New Revision: 9588

Modified:
   trunk/core/class.c
   trunk/core/tbl.c
Log:
- fix memmove() in TblDeleteHash().
- make sure a class exists before unregistering it.



Modified: trunk/core/class.c
===================================================================
--- trunk/core/class.c2013-04-21 01:26:19 UTC (rev 9587)
+++ trunk/core/class.c2013-04-21 03:51:54 UTC (rev 9588)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -247,18 +247,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 {
 AG_ObjectClass *cl = p;
 AG_ObjectClass *clSuper = cl-&amp;gt;super;
+Uint h = AG_TblHash(agClassTbl, cl-&amp;gt;hier);
 
 AG_MutexLock(&amp;amp;agClassLock);
+if (AG_TblExistsHash(agClassTbl, h, cl-&amp;gt;hier)) {
 #ifdef AG_OBJDEBUG
-Debug(NULL, "Unregistering class: %s\n", cl-&amp;gt;name);
+Debug(NULL, "Unregistering class: %s\n", cl-&amp;gt;name);
 #endif
-/* Remove from the class tree. */
-TAILQ_REMOVE(&amp;amp;clSuper-&amp;gt;sub, cl, subclasses);
-cl-&amp;gt;super = NULL;
+/* Remove from the class tree. */
+TAILQ_REMOVE(&amp;amp;clSuper-&amp;gt;sub, cl, subclasses);
+cl-&amp;gt;super = NULL;
 
-/* Remove from the class table. */
-AG_TblDelete(agClassTbl, cl-&amp;gt;hier);
-
+/* Remove from the class table. */
+AG_TblDeleteHash(agClassTbl, h, cl-&amp;gt;hier);
+}
 AG_MutexUnlock(&amp;amp;agClassLock);
 }
 

Modified: trunk/core/tbl.c
===================================================================
--- trunk/core/tbl.c2013-04-21 01:26:19 UTC (rev 9587)
+++ trunk/core/tbl.c2013-04-21 03:51:54 UTC (rev 9588)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -173,9 +173,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_FreeVariable(&amp;amp;buck-&amp;gt;ents[i]);
 if (i &amp;lt; buck-&amp;gt;nEnts-1) {
 memmove(&amp;amp;buck-&amp;gt;ents[i], &amp;amp;buck-&amp;gt;ents[i+1],
-    (buck-&amp;gt;nEnts-1)*sizeof(AG_Variable));
+    (buck-&amp;gt;nEnts - i - 1)*sizeof(AG_Variable));
 memmove(&amp;amp;buck-&amp;gt;keys[i], &amp;amp;buck-&amp;gt;keys[i+1],
-    (buck-&amp;gt;nEnts-1)*sizeof(char *));
+    (buck-&amp;gt;nEnts - i - 1)*sizeof(char *));
 }
 buck-&amp;gt;nEnts--;
 return (0);
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-21T03:51:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1810">
    <title>Agar: r9587 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1810</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-20 20:26:19 -0500 (Sat, 20 Apr 2013)
New Revision: 9587

Modified:
   trunk/gui/gui.c
   trunk/gui/text.h
Log:
free all driver instances in AG_DestroyGUI()



Modified: trunk/gui/gui.c
===================================================================
--- trunk/gui/gui.c2013-04-14 04:15:58 UTC (rev 9586)
+++ trunk/gui/gui.c2013-04-21 01:26:19 UTC (rev 9587)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -302,7 +302,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_DestroyGUI(void)
 {
 void **ops;
+AG_Driver *drv;
 
+AG_LockVFS(&amp;amp;agDrivers);
+OBJECT_FOREACH_CHILD(drv, &amp;amp;agDrivers, ag_driver) {
+AG_ObjectFreeChildren(drv);
+}
+rescan:
+OBJECT_FOREACH_CHILD(drv, &amp;amp;agDrivers, ag_driver) {
+AG_DriverClose(drv);
+if (drv == (AG_Driver *)agDriverSw) { agDriverSw = NULL; }
+if (drv == (AG_Driver *)agDriverMw) { agDriverMw = NULL; }
+goto rescan;
+}
+agDriverOps = NULL;
+AG_UnlockVFS(&amp;amp;agDrivers);
+
 /* Destroy the GUI subsystems. */
 AG_DestroyWindowSystem();
 AG_DestroyTextSubsystem();

Modified: trunk/gui/text.h
===================================================================
--- trunk/gui/text.h2013-04-14 04:15:58 UTC (rev 9586)
+++ trunk/gui/text.h2013-04-21 01:26:19 UTC (rev 9587)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -196,6 +196,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 void AG_TextEditString(char *, size_t, const char *, ...)
        FORMAT_ATTRIBUTE(printf,3,4)
        NONNULL_ATTRIBUTE(3);
+struct ag_window *AG_TextPromptOptions(struct ag_button **, Uint, const char *, ...);
 
 void      AG_TextInitGlyphCache(AG_Driver *);
 void      AG_TextClearGlyphCache(AG_Driver *);
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-21T01:26:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1809">
    <title>Agar: r9586 - in trunk: gui tests</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1809</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-13 23:15:58 -0500 (Sat, 13 Apr 2013)
New Revision: 9586

Modified:
   trunk/gui/AG_Text.3
   trunk/gui/text.c
   trunk/gui/text.h
   trunk/tests/modalwindowhandler.c
   trunk/tests/textdlg.c
Log:
- fix the modalwindowhandler test case.
- remove the nonsense AG_TextPromptString() and AG_TextPromptOptions() interfaces.



Modified: trunk/gui/AG_Text.3
===================================================================
--- trunk/gui/AG_Text.32013-04-14 03:48:48 UTC (rev 9585)
+++ trunk/gui/AG_Text.32013-04-14 04:15:58 UTC (rev 9586)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -282,12 +282,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 .Ft "void"
 .Fn AG_TextEditString "char *buf" "size_t len" "const char *format" "..."
 .Pp
-.Ft "void"
-.Fn "AG_TextPromptString" "const char *prompt" "void (*ok_fn)(AG_Event *)" "const char *fmt" "..."
-.Pp
-.Ft "AG_Window *"
-.Fn AG_TextPromptOptions "AG_Button **buttons" "Uint nButtons" "const char *format" "..."
-.Pp
 .nr nS 0
 The
 .Fn AG_TextMsg
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -366,26 +360,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 is a pointer to the string buffer, and
 .Fa len
 is the size of the buffer.
-.Pp
-The
-.Fn AG_TextPromptString
-creates a modal dialog asking the user for a text string.
-Once the user confirms the entry, the
-.Fn ok_fn
-callback is invoked (see
-.Xr AG_Event 3
-for details on the argument format).
-A copy of the entered string is passed as the last argument on the stack..
-The event handler must
-.Xr free 3
-that string after use.
-.Pp
-.Fn AG_TextPromptOptions
-creates a dialog displaying a text string and an array of buttons.
-.Fa buttons
-is a set of existing
-.Xr AG_Button 3
-widgets to display.
 .Sh FONT SELECTION
 .nr nS 1
 .Ft "AG_Font *"

Modified: trunk/gui/text.c
===================================================================
--- trunk/gui/text.c2013-04-14 03:48:48 UTC (rev 9585)
+++ trunk/gui/text.c2013-04-14 04:15:58 UTC (rev 9586)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1708,52 +1708,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_WindowShow(win);
 }
 
-/* Prompt the user for a string. */
-void
-AG_TextPromptString(const char *prompt, void (*ok_fn)(AG_Event *),
-    const char *fmt, ...)
-{
-AG_Window *win;
-AG_Box *bo;
-AG_Button *btnOK;
-AG_Textbox *tb;
-AG_Event *ev;
-
-win = AG_WindowNew(AG_WINDOW_MODAL|AG_WINDOW_NOTITLE);
-win-&amp;gt;wmType = AG_WINDOW_WM_DIALOG;
-AG_WindowSetPosition(win, AG_WINDOW_CENTER, 0);
-AG_WindowSetSpacing(win, 8);
-
-bo = AG_BoxNew(win, AG_BOX_VERT, AG_BOX_HFILL);
-AG_LabelNewS(bo, 0, prompt);
-
-bo = AG_BoxNew(win, AG_BOX_VERT, AG_BOX_HFILL);
-{
-tb = AG_TextboxNewS(bo, AG_TEXTBOX_EXCL, NULL);
-AG_ExpandHoriz(tb);
-ev = AG_SetEvent(tb, "textbox-return", ok_fn, NULL);
-AG_EVENT_GET_ARGS(ev, fmt)
-AG_EVENT_INS_VAL(ev, AG_VARIABLE_STRING, "string", s,
-    Strdup(tb-&amp;gt;text-&amp;gt;ent[0].buf));
-AG_AddEvent(tb, "textbox-return", AGWINDETACH(win));
-}
-
-bo = AG_BoxNew(win, AG_BOX_HORIZ, AG_BOX_HOMOGENOUS|AG_BOX_HFILL);
-{
-btnOK = AG_ButtonNewS(bo, 0, _("Ok"));
-ev = AG_SetEvent(btnOK, "button-pushed", ok_fn, NULL);
-AG_EVENT_GET_ARGS(ev, fmt);
-AG_EVENT_INS_VAL(ev, AG_VARIABLE_STRING, "string", s,
-    Strdup(tb-&amp;gt;text-&amp;gt;ent[0].buf));
-AG_AddEvent(btnOK, "button-pushed", AGWINDETACH(win));
-
-AG_ButtonNewFn(bo, 0, _("Cancel"), AGWINDETACH(win));
-}
-
-AG_WidgetFocus(tb);
-AG_WindowShow(win);
-}
-
 /* Align a text surface inside a given space. */
 void
 AG_TextAlign(int *x, int *y, int wArea, int hArea, int wText, int hText,

Modified: trunk/gui/text.h
===================================================================
--- trunk/gui/text.h2013-04-14 03:48:48 UTC (rev 9585)
+++ trunk/gui/text.h2013-04-14 04:15:58 UTC (rev 9586)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -197,13 +197,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
        FORMAT_ATTRIBUTE(printf,3,4)
        NONNULL_ATTRIBUTE(3);
 
-struct ag_window *AG_TextPromptOptions(struct ag_button **, Uint,
-                       const char *, ...)
-         FORMAT_ATTRIBUTE(printf,3,4)
-          NONNULL_ATTRIBUTE(3);
-void AG_TextPromptString(const char *, void (*)(AG_Event *),
-         const char *, ...);
-
 void      AG_TextInitGlyphCache(AG_Driver *);
 void      AG_TextClearGlyphCache(AG_Driver *);
 AG_Glyph *AG_TextRenderGlyphMiss(AG_Driver *, Uint32);

Modified: trunk/tests/modalwindowhandler.c
===================================================================
--- trunk/tests/modalwindowhandler.c2013-04-14 03:48:48 UTC (rev 9585)
+++ trunk/tests/modalwindowhandler.c2013-04-14 04:15:58 UTC (rev 9586)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6,23 +6,30 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "agartest.h"
 
 static void
-PopupReact(AG_Event *event)
+CreateWindow(AG_Event *event)
 {
-char s[128];
-int count = AG_INT(1);
+AG_Window *win, *winParent = AG_PTR(1);
+int count = AG_INT(2);
+AG_Button *btn;
 
-AG_Snprintf(s, sizeof(s), "This is the #%d popup prompt.",
-    count++);
-AG_TextPromptString(s, PopupReact, "%i", count++);
+if ((win = AG_WindowNew(AG_WINDOW_MODAL)) == NULL) {
+return;
+}
+AG_LabelNew(win, 0, "Modal window #%d", count++);
+AG_ButtonNewFn(win, 0, "Create another",
+    CreateWindow, "%p,%i", win, count++);
+AG_WindowShow(win);
+
 }
 
 static int
 TestGUI(void *obj, AG_Window *win)
 {
-AG_LabelNew(win, 0, "Calling AG_TextPromptString(3)...");
-AG_LabelNew(win, 0, "Select \"Cancel\" to exit loop.");
-AG_TextPromptString("This is the first popup prompt.",
-    PopupReact, "%i", 2);
+AG_Event ev;
+
+AG_LabelNewS(win, 0, "Creating a test modal window...");
+AG_EventArgs(&amp;amp;ev, "%p,%i", win, 1);
+CreateWindow(&amp;amp;ev);
 return (0);
 }
 

Modified: trunk/tests/textdlg.c
===================================================================
--- trunk/tests/textdlg.c2013-04-14 03:48:48 UTC (rev 9585)
+++ trunk/tests/textdlg.c2013-04-14 04:15:58 UTC (rev 9586)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -19,25 +19,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 static void
 TestPrompts(AG_Event *event)
 {
-/* Prompt for a series of options. */
-{
-AG_Button *btns[3];
-
-btns[0] = AG_ButtonNewS(NULL, 0, NULL);
-btns[1] = AG_ButtonNewS(NULL, 0, NULL);
-btns[2] = AG_ButtonNewS(NULL, 0, NULL);
-AG_TextPromptOptions(btns, 3, "Multiple-choice selection: ");
-AG_ButtonText(btns[0], "Yes");
-AG_ButtonText(btns[1], "No");
-AG_ButtonText(btns[2], "Maybe");
-}
-
 /* Edit an existing floating-point variable. */
 AG_TextEditFloat(&amp;amp;v, 0.0, 100.0, "cm", "Edit a float value: ");
 
-/* Prompt for a string and invoke callback on return. */
-AG_TextPromptString("Prompt for a string: ", EnteredString, NULL);
-
 /* Edit a fixed-size string buffer. */
 AG_Strlcpy(someString, "Test string", sizeof(someString));
 AG_TextEditString(someString, sizeof(someString), "Edit a string: ");
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-14T04:15:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1808">
    <title>Agar: r9585 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1808</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-13 22:48:48 -0500 (Sat, 13 Apr 2013)
New Revision: 9585

Modified:
   trunk/gui/drv.h
Log:
fix AG_GetDisplaySize() if NULL is passed in SW mode; thanks pi31415!



Modified: trunk/gui/drv.h
===================================================================
--- trunk/gui/drv.h2013-04-07 00:46:47 UTC (rev 9584)
+++ trunk/gui/drv.h2013-04-14 03:48:48 UTC (rev 9585)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -272,11 +272,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_GetDisplaySize(void *drv, Uint *w, Uint *h)
 {
 AG_DriverClass *dc = (drv != NULL) ? AGDRIVER_CLASS(drv) : agDriverOps;
+AG_DriverSw *dsw = (drv != NULL) ? drv : agDriverSw;
 
 switch (dc-&amp;gt;wm) {
 case AG_WM_SINGLE:
-*w = AGDRIVER_SW(drv)-&amp;gt;w;
-*h = AGDRIVER_SW(drv)-&amp;gt;h;
+*w = dsw-&amp;gt;w;
+*h = dsw-&amp;gt;h;
 return (0);
 case AG_WM_MULTIPLE:
 return dc-&amp;gt;getDisplaySize(w, h);
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-14T03:48:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1807">
    <title>Agar: r9584 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1807</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-06 19:46:47 -0500 (Sat, 06 Apr 2013)
New Revision: 9584

Modified:
   trunk/gui/surface.c
Log:
honor the source x offset in AG_SurfaceBlit(); thanks pi31415!



Modified: trunk/gui/surface.c
===================================================================
--- trunk/gui/surface.c2013-04-05 08:18:29 UTC (rev 9583)
+++ trunk/gui/surface.c2013-04-07 00:46:47 UTC (rev 9584)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -541,7 +541,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 /* XXX TODO optimized cases */
 for (y = 0; y &amp;lt; dr.h; y++) {
-pSrc = (Uint8 *)ss-&amp;gt;pixels + (sr.y+y)*ss-&amp;gt;pitch;
+pSrc = (Uint8 *)ss-&amp;gt;pixels + (sr.y+y)*ss-&amp;gt;pitch +
+    sr.x*ss-&amp;gt;format-&amp;gt;BytesPerPixel;
 pDst = (Uint8 *)ds-&amp;gt;pixels + (dr.y+y)*ds-&amp;gt;pitch +
     dr.x*ds-&amp;gt;format-&amp;gt;BytesPerPixel;
 for (x = 0; x &amp;lt; dr.w; x++) {
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-07T00:46:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1806">
    <title>Agar: r9583 - trunk/tests</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1806</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-05 03:18:29 -0500 (Fri, 05 Apr 2013)
New Revision: 9583

Modified:
   trunk/tests/string.c
   trunk/tests/threads.c
   trunk/tests/timeouts.c
Log:
unused variables


Modified: trunk/tests/string.c
===================================================================
--- trunk/tests/string.c2013-04-05 08:18:19 UTC (rev 9582)
+++ trunk/tests/string.c2013-04-05 08:18:29 UTC (rev 9583)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,7 +30,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AG_TestInstance *ti = obj;
 int i = -123;
 Uint u = 123;
-float flt = 1.234;
+float flt = 1.234f;
 double dbl = 2.345;
 long l = -123456;
 Ulong ul = 123456;

Modified: trunk/tests/threads.c
===================================================================
--- trunk/tests/threads.c2013-04-05 08:18:19 UTC (rev 9582)
+++ trunk/tests/threads.c2013-04-05 08:18:29 UTC (rev 9583)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -126,7 +126,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 MyTestInstance *ti = AG_PTR(1);
 AG_Window *win;
 AG_ProgressBar *pb;
-AG_Thread th;
 
 if (ti-&amp;gt;sleeping.win != NULL ||
     (win = AG_WindowNew(AG_WINDOW_NOCLOSE)) == NULL) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -157,7 +156,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 MyTestInstance *ti = AG_PTR(1);
 AG_Window *win;
 AG_ProgressBar *pb;
-AG_Thread th;
 
 if (ti-&amp;gt;spinning.win != NULL ||
     (win = AG_WindowNew(AG_WINDOW_NOCLOSE)) == NULL) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -211,7 +209,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 {
 AG_Window *win = AG_SELF();
 MyTestInstance *ti = AG_PTR(1);
-AG_ConsoleLine *cl;
 
 ti-&amp;gt;closeTest = 1;
 

Modified: trunk/tests/timeouts.c
===================================================================
--- trunk/tests/timeouts.c2013-04-05 08:18:19 UTC (rev 9582)
+++ trunk/tests/timeouts.c2013-04-05 08:18:29 UTC (rev 9583)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -47,8 +47,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 TestOneShot(AG_Event *event)
 {
 MyTestInstance *ti = AG_PTR(1);
-AG_Object *ob;
-AG_Timer *to;
 
 TestMsg(ti, "Testing 3 one-shot timers");
 if (AG_AddTimer(NULL, &amp;amp;ti-&amp;gt;to[0], 1000, Timeout1, "%p", ti) == -1 ||
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -62,8 +60,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 StartRegular(AG_Event *event)
 {
 MyTestInstance *ti = AG_PTR(1);
-AG_Object *ob;
-AG_Timer *to;
 
 TestMsg(ti, "Starting regular timer");
 if (AG_AddTimer(NULL, &amp;amp;ti-&amp;gt;toReg, 1000, TimeoutRegular, "%p", ti) == -1) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -75,7 +71,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 StopRegular(AG_Event *event)
 {
 MyTestInstance *ti = AG_PTR(1);
-AG_Timer *to;
 
 TestMsg(ti, "Stopping regular timer");
 AG_DelTimer(NULL, &amp;amp;ti-&amp;gt;toReg);
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-05T08:18:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1805">
    <title>Agar: r9582 - trunk/tests</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1805</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-04-05 03:18:19 -0500 (Fri, 05 Apr 2013)
New Revision: 9582

Modified:
   trunk/tests/Makefile
Log:
set PROG_LINKS to static


Modified: trunk/tests/Makefile
===================================================================
--- trunk/tests/Makefile2013-04-01 02:00:09 UTC (rev 9581)
+++ trunk/tests/Makefile2013-04-05 08:18:19 UTC (rev 9582)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -11,8 +11,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 PROG_TYPE="GUI"
 PROG_GUID="11D6C9FF-522E-43ed-B3EB-92A2C636CCA7"
 
-PROG_LINKS=${AGMATH_LINKS_STATIC} ${DEV_LINKS_STATIC} ${GUI_LINKS_STATIC} \
-${CORE_LINKS_STATIC}
+PROG_LINKS=${AGMATH_LINKS} ${DEV_LINKS} ${GUI_LINKS} ${CORE_LINKS}
 CFLAGS+=${AGAR_MATH_CFLAGS} ${AGAR_DEV_CFLAGS} ${AGAR_CFLAGS}
 LIBS+=${AGAR_MATH_LIBS} ${AGAR_DEV_LIBS} ${AGAR_LIBS}
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-05T08:18:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lib.agar.scm/1804">
    <title>Agar: r9581 - trunk/gui</title>
    <link>http://permalink.gmane.org/gmane.comp.lib.agar.scm/1804</link>
    <description>&lt;pre&gt;Author: vedge
Date: 2013-03-31 21:00:09 -0500 (Sun, 31 Mar 2013)
New Revision: 9581

Modified:
   trunk/gui/AG_Text.3
   trunk/gui/text.c
Log:
in AG_TextPromptString(), pass a copy of the buffer to the event
handler.



Modified: trunk/gui/AG_Text.3
===================================================================
--- trunk/gui/AG_Text.32013-03-28 06:00:23 UTC (rev 9580)
+++ trunk/gui/AG_Text.32013-04-01 02:00:09 UTC (rev 9581)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -375,7 +375,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 callback is invoked (see
 .Xr AG_Event 3
 for details on the argument format).
-The entered string is the last argument on the stack.
+A copy of the entered string is passed as the last argument on the stack..
+The event handler must
+.Xr free 3
+that string after use.
 .Pp
 .Fn AG_TextPromptOptions
 creates a dialog displaying a text string and an array of buttons.

Modified: trunk/gui/text.c
===================================================================
--- trunk/gui/text.c2013-03-28 06:00:23 UTC (rev 9580)
+++ trunk/gui/text.c2013-04-01 02:00:09 UTC (rev 9581)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1734,7 +1734,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 ev = AG_SetEvent(tb, "textbox-return", ok_fn, NULL);
 AG_EVENT_GET_ARGS(ev, fmt)
 AG_EVENT_INS_VAL(ev, AG_VARIABLE_STRING, "string", s,
-    tb-&amp;gt;text-&amp;gt;ent[0].buf);
+    Strdup(tb-&amp;gt;text-&amp;gt;ent[0].buf));
 AG_AddEvent(tb, "textbox-return", AGWINDETACH(win));
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1744,7 +1744,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 ev = AG_SetEvent(btnOK, "button-pushed", ok_fn, NULL);
 AG_EVENT_GET_ARGS(ev, fmt);
 AG_EVENT_INS_VAL(ev, AG_VARIABLE_STRING, "string", s,
-    tb-&amp;gt;text-&amp;gt;ent[0].buf);
+    Strdup(tb-&amp;gt;text-&amp;gt;ent[0].buf));
 AG_AddEvent(btnOK, "button-pushed", AGWINDETACH(win));
 
 AG_ButtonNewFn(bo, 0, _("Cancel"), AGWINDETACH(win));
&lt;/pre&gt;</description>
    <dc:creator>Agar-SVN</dc:creator>
    <dc:date>2013-04-01T02:00:09</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lib.agar.scm">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lib.agar.scm</link>
  </textinput>
</rdf:RDF>
