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]