Hello,

Thanks for Agar's library, which is neat.

For the sake of users' feedback, I tried to make a kind of list of bug reports/suggested improvements dealing with it.

Here it is (based on latest version of libagar from SVN, rev 8973, on Ubuntu Maverick 64-bit):

While using AG_InitGraphics, some window-related problems arose *only* with the OpenGL (glx) driver (thus not with the SDL one):

 * O1: A main window created with:
  AG_Window & win = * AG_WindowNew( /* flags */ AG_WINDOW_KEEPABOVE
    | AG_WINDOW_PLAIN | AG_WINDOW_NORESIZE | AG_WINDOW_NOBUTTONS
    | AG_WINDOW_NOMOVE ) ;

will let top and bottom parts of the desktop (applet bar/task bar) be seen as soon as a modal window is created, at least with:
 AG_Window & errorWin = * AG_WindowNew( AG_WINDOW_DIALOG | AG_WINDOW_MODAL
    | AG_WINDOW_NORESIZE | AG_WINDOW_NOCLOSE | AG_WINDOW_NOMINIMIZE
    | AG_WINDOW_NOMOVE | AG_WINDOW_NOMAXIMIZE | AG_WINDOW_NOBORDERS
    | AG_WINDOW_KEEPABOVE ) ;

* O2: when a modal window is created, its initial client area is apparently in my case the content of another surface/texture: I can see a clone of a label of the main window which flashes, being replaced by its expected content as soon as the modal window decides to redraw itself, a few milliseconds later

* O3: despite having a modal window on top, I can push buttons on the main window underneath and trigger events


Same code, with the SDL driver:

* S1: could not succeed in having the main window being fullscreen (tried AG_WindowMaximize, AG_WindowSetGeometry, AG_WindowSetGeometryMax, whereas the same code with OpenGL is fullscreen)

* S2: if maximizing that window, most content goes out of the screen (as if the virtual screen was twice as wide), and it is not possible to return to the initial normal screen layout

 * S3: even when being fully minimized, redraws are triggered permanently!


Other unrelated problems:

- U1: if having configured Agar without the math module (--disable-math), attempts to build demos using that module (ex: 'plotting') will still be done and will fail at link time (ex: plotting.o: In function `ComputeSquaredSineConstants': plotting.c:(.text+0x86e): undefined reference to `M_PlotLabelSetText'); by the way, it is a surprise it compiles at all, as one could expect the configure step to have set something like #define AGAR_USES_MATH false and the math headers to be wrapped in the corresponding preprocessor test (conditionally defining their symbols)

- U2: font rendering might be incorrectly truncated into client area (see http://esperide.com/agar-font-rendering-truncated.png)

- U3: fix the -L/usr/lib64 linking problem by putting in at end rather than at begin of the link paths

- U4: ensure that widgets are rendered a lot less frequently, ideally only needed (currently they are many useless renderings, as shown when displaying a message in the console at each, say, label redrawing


Suggested enhancements:

    - E1: allow to define the "focus chain"
- E2: have AG_TEXTBOX_ABANDON_FOCUS de-select the current widget and select the next one in the focus chain (or define AG_TEXTBOX_TRANSMIT_FOCUS or alike) - E3: improve struct declarations (http://article.gmane.org/gmane.comp.lib.agar.general/612) - E4: decrease the use of macros, especially declared in installed headers - E5: some other elements listed in http://article.gmane.org/gmane.comp.lib.agar.general/609 probably still apply
    - E6: support per-label font definition

I do not know how this could be organized (ex: should we used the bugtracker in http://bugs.hypertriton.com/enter_bug.cgi?product=Agar? Would branches be useful? etc.), but maybe that the community could help a bit improving Agar. I may be able to contribute some fixes. Some topics (ex: E6) are definitively more easily tackled than others (build or alike).

Thanks for this library,
Best regards,

Olivier Boudeville.

_______________________________________________
Agar mailing list
[email protected]
http://libagar.org/lists.html

Reply via email to