nanogui: Re: pixmaps and XOR not working]
Subject:
Re: [nanogui] pixmaps and XOR not working]
From:
"Greg Haerr" ####@####.####
Date:
13 May 2010 03:09:38 -0000
Message-Id: <0a8301caf249$8b23bcf0$6564a8c0@winXP>
: There is one other place in the code that uses GrCopyArea() and XOR, and
: it shows the same behavior. Different pixmaps, but the result is the
: same - GR_MODE_COPY apparently.
Jim - I thought I had sent you some help on this last week.
The problem is likely that the framebuffer you're running
doesn't implement the blit XOR opcode, and copies instead.
To debug this, I need to know the bits per pixel (bpp)
that you're screen is configured for. From this I can
determine the driver nano-X is using.
The call chain will look like this, (go ahead and try debugging):
nanox/srvfunc.c::GrCopyArea is called.
GrCopyArea checks its last parameter, op, to see
whether its MWROP_USE_GC_MODE. If so, then
the op is taken from the passed gc. If not, then
the op is used directly. You are passing FALSE,
so this is in error.
GrCopyArea then calls engine/devdraw.c::GdBlit with the opcode.
GdBlit calls the driver Blit() entry point. If
you're running 32bpp, this would be
drivers/fblin32.c::linear32_blit(). There is a case statement
that handles the XOR case using ApplyOp.
Hope this helps!
Regards,
Greg