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