Index:
[thread]
[date]
[subject]
[author]
From: Jan Kneschke <Jan.Kneschke@kiel.netsurf.de>
To : ggi-develop@eskimo.com
Date: Fri, 17 Jul 1998 16:06:30 +0200 (MEST)
Re: triggered some probs with libAA-target
On Fri, 17 Jul 1998, Marcus Sundberg wrote:
> becka@rz.uni-duesseldorf.de wrote:
> > > vertical or horizontal size == 0 !!
> > > demo: can't resolve symbol '_mansync_stop'
> >
> > Hmm - LibAA as many other inherently ASYNC targets uses that mansync.inc
> > hack that makes them look synchronous.
> >
> > Have a look at the CVS logs on who recently changed the mansync stuff and
> > check with him for what he changed.
>
> The problem is that you have to define MANSYNC_CHILD
> or MANSYNC_PTHREAD before including ../common/mansync.in,
> and thats not a recents change. It was made several
> months ago by Steve Cheng, and it was clearly announced
> on the mailinglist.
Aehm, MANSYNC_CHILD is define in aavisual.h which is included before
../common/mansync.inc in display/aa/mode.c . but the code in aa/mode.c and
X/mode.c is different. let me show you:
display/aa/mode.c:118:
#include "../common/mansync.inc"
int GGIflush(ggi_visual *vis)
{
if (MANSYNC_ISASYNC && !(LIBGGI_FLAGS(vis) & GGIFLAG_ASYNC))
_mansync_start(vis);
else if (!MANSYNC_ISASYNC && (LIBGGI_FLAGS(vis) & GGIFLAG_ASYNC))
_mansync_stop(vis);
return MANSYNC_ISASYNC;
}
display/X/mode.c:111:
#include "../common/mansync.inc"
#ifdef MANSYNC_CHILD
int GGIflush(ggi_visual *vis)
{
if (!XLIB_PRIV(vis)->ximage) return -1;
if (MANSYNC_ISASYNC && !(LIBGGI_FLAGS(vis) & GGIFLAG_ASYNC)) {
if (!mansync_hook_with_a_clashpreventing_name.nrsync) {
_mansync_start(vis);
DPRINT("_mansync_start() called!\n");
} else
MANSYNC_ISASYNC = 0;
mansync_hook_with_a_clashpreventing_name.nrsync++;
} else if (!MANSYNC_ISASYNC && (LIBGGI_FLAGS(vis) & GGIFLAG_ASYNC)) {
mansync_hook_with_a_clashpreventing_name.nrsync--;
if (!mansync_hook_with_a_clashpreventing_name.nrsync)
_mansync_stop(vis);
else
MANSYNC_ISASYNC = 1;
}
return _GGIdoflush(XLIB_PRIV(vis));
}
#else
int GGIflush(ggi_visual *vis)
{
if (MANSYNC_ISASYNC && !(LIBGGI_FLAGS(vis) & GGIFLAG_ASYNC))
_mansync_start(vis);
else if (!MANSYNC_ISASYNC && (LIBGGI_FLAGS(vis) & GGIFLAG_ASYNC))
_mansync_stop(vis);
return MANSYNC_ISASYNC;
}
#endif /* MANSYNC_CHILD */
i hope a can simply move it over to aa.
...
nope. .(
i think this problem wouldn't be solved by this piece of code. i'm still
unclear why the _mansync_stop is first defined and one line later it isn't
anymore:
00004f28 t _mansync_cont
00004dcc t _mansync_dummy
00004dec t _mansync_handler
00004f08 t _mansync_ignore
00004e28 t _mansync_start
00004ea8 t _mansync_stop
U _mansync_stop
oh, shit. (* my hand is moving with a high speed against my head *)
here is the answer:
weigon@weigon:/linux2/home/weigon/degas/lib/libggi/display/aa > grep _mansync *.c
mode.c: _mansync_start(vis);
mode.c: _mansync_stop(vis);
mode.c: _mansync_ignore(vis);
mode.c: _mansync_cont(vis);
visual.c: _mansync_stop(vis);
^^^^^^^^^
can someone tell if this _mansync_stop is really needed ?? i'll try if
everything works without this call in GGIdlcleanup.
is it really normal that a function is available in one object file only ??
> Maybe we should have a maintainer in charge of every
> target so that they doesn't just get forgotten when changes
> like this is made?
i can take libAA. it's small and nice.
> //Marcus
thats all
Jan
---
Project: GGI - S3-Vision-driver -- http://www.ggi-project.org/
-)= Jan (Weigon) Kneschke -- Kiel -- Northern Germany =(-
Index:
[thread]
[date]
[subject]
[author]