I just pushed an improvement for the region invalidation

as for CoordModeOrigin, I'll have to look into it

On Wed, Oct 12, 2011 at 3:34 PM, Marc-André Moreau <
marcandre.mor...@gmail.com> wrote:

>
>
> On Wed, Oct 12, 2011 at 3:25 PM, Christian Nilsson <nik...@gmail.com>wrote:
>
>> Hi
>>
>> When writing new messages in Outlook 2010 I get some graphical problems...
>> I have not found anything else that uses this? or at least where the
>> problem is visible in the same way. (taskmgr uses it but draws black
>> lines on black background)
>>
>> What I've detected so far. (or at least i think)
>> all this is in function xf_gdi_polyline
>>
>> * CoordModePrevious needs to be changed to CoordModeOrigin, Otherwise
>> it draws diagonally.
>> * needs a fix for the last (or first) line of gdi_InvalidateRegion,
>> and this i'm not sure on how it should be done.
>>
>> This can quite easily be seen if forcing the color to something easy
>> to see, i used color = 0xff0000;
>> With these changes i now have a "U" in taskmgr and the same in
>> Outlook, now just the top line needs to be invalidated.
>>
>> Another thing i noted when poking around: this function always calls
>> gdi_InvalidateRegion while most other functions only do so if
>> (xfi->drawing == xfi->primary)
>> and some even inside if (xfi->remote_app != True)
>> does it mater? why the inconsistency of gdi_InvalidateRegion?
>>
>
> that's actually a bug, I should look into it.
>
> gdi_InvalidateRegion is used to invalidate a region on the primary surface.
> When in desktop mode, the drawing operation is performed twice on the
> primary buffer and on the actual window buffer. When in RemoteApp mode, the
> region is invalidated on the primary buffer, and the invalidated region is
> only copied to the corresponding windows when EndPaint is being called.
>
> if (xfi->drawing == xfi->primary) checks that the operation is performed on
> the primary buffer (we only invalidate on the primary buffer)
>
> if (xfi->remote_app != True) checks that we're in desktop mode, and
> performs the same graphical operation on the window buffer as wall. this
> cannot be done in RemoteApp mode due to the fact that there are multiple
> windows instead of one that corresponds 1:1 to the primary buffer.
>
> In both cases, we want to invalidate the region on the primary buffer. In
> desktop mode, this information is discarded, but in RemoteApp it is used on
> the call to EndPaint.
>
> Performing the same operation twice on the primary buffer and the window
> buffer in desktop mode is faster in many cases. For instance, line drawing
> is faster when done twice instead of done once on the primary buffer, and
> then copying the invalidated area from the primary buffer to the window
> buffer.
>
>>
>> cmd for testing, just in case it has anything to do with it.
>> client/X11/xfreerdp -u Christian -g 2800x1024 -x $((128+256)) -a 32
>> winbox.local
>>
>> /Christian
>>
>>
>> ------------------------------------------------------------------------------
>> All the data continuously generated in your IT infrastructure contains a
>> definitive record of customers, application performance, security
>> threats, fraudulent activity and more. Splunk takes this data and makes
>> sense of it. Business sense. IT sense. Common sense.
>> http://p.sf.net/sfu/splunk-d2d-oct
>> _______________________________________________
>> Freerdp-devel mailing list
>> Freerdp-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/freerdp-devel
>>
>
>
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________
Freerdp-devel mailing list
Freerdp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Reply via email to