This is the mail archive of the
cygwin-xfree@cygwin.com
mailing list for the Cygwin XFree86 project.
RE: Just a note - nativegdi engine
- From: "Harold Hunt" <huntharo at msu dot edu>
- To: "Robert Collins" <robert dot collins at itdomain dot com dot au>, "Cygwin-Xfree" <cygwin-xfree at sources dot redhat dot com>
- Date: Tue, 9 Apr 2002 12:24:37 -0400
- Subject: RE: Just a note - nativegdi engine
Rob,
> I've made serious progress, but I'm having trouble with two things.
>
> 1) The mouse - I'm not getting any WM_MOUSEMOVE messages to the app
> windows. Anyone seen this before?
> 2) I've broken fillspans for DRAWABLE_WINDOWs. I can fix it by drawing
> into the root window hdc always,
> but that's defeating the purpose - all we gain is the pretty task bar
> entries :[.
>
> 2) I'm working on, I suspect it's a coordinate translation thing. I get
> lovely background stipple but not (AFAICT solid fills).
Interesting... I'll say more when I have time to think about it (working
today).
> Creating a single combined clipping region using CombineRgn will allow
> you to move the for (iX= ..)loop from within the while (nbox--) loop,
> thus saving multiple selectClipRgn+deleteObject + bitblt calls, which
> may make the native engine quite a bit faster. I *will* do this
> optimisation here and elsewhere, but only after I get the fills working
> for 'native' windows first.
That's Alan's domain... I'll let him look into it.
Harold
> -----Original Message-----
> From: cygwin-xfree-owner@cygwin.com
> [mailto:cygwin-xfree-owner@cygwin.com]On Behalf Of Robert Collins
> Sent: Tuesday, April 09, 2002 11:48 AM
> To: Cygwin-Xfree
> Subject: Just a note - nativegdi engine
>
>
> I've made serious progress, but I'm having trouble with two things.
>
> 1) The mouse - I'm not getting any WM_MOUSEMOVE messages to the app
> windows. Anyone seen this before?
> 2) I've broken fillspans for DRAWABLE_WINDOWs. I can fix it by drawing
> into the root window hdc always,
> but that's defeating the purpose - all we gain is the pretty task bar
> entries :[.
>
> 2) I'm working on, I suspect it's a coordinate translation thing. I get
> lovely background stipple but not (AFAICT solid fills).
>
> Anyway, the reason for the email:
>
> Harold:
> I thought you might like to see the little todo: I've added.
>
> Creating a single combined clipping region using CombineRgn will allow
> you to move the for (iX= ..)loop from within the while (nbox--) loop,
> thus saving multiple selectClipRgn+deleteObject + bitblt calls, which
> may make the native engine quite a bit faster. I *will* do this
> optimisation here and elsewhere, but only after I get the fills working
> for 'native' windows first.
>
> Rob
>
> /* TODO: create a single commbined clipping region */
> nbox = REGION_NUM_RECTS (pClip);
> pbox = REGION_RECTS (pClip);
> while (nbox--)
> {
> hrgn = CreateRectRgn (pbox->x1, pbox->y1, pbox->x2,
> pbox->y2);
> SelectClipRgn (pGCPriv->hdcMem, hrgn);
> DeleteObject (hrgn);
> hrgn = NULL;
>
> for (iX = fullX1; iX < fullX2; iX +=
> pStipple->drawable.width)
> {
> int width;
>
> if ((iX + pStipple->drawable.width) > fullX2)
> width = fullX2 - iX;
> else
> width = pStipple->drawable.width;
>
> BitBlt (pGCPriv->hdcMem,
> iX, fullY1,
> width, 1,
> hdcStipple,
> 0,
> fullY1 % pStipple->drawable.height,
> g_copyROP[pGC->alu]);
> }
>
> pbox++;
> }