Ah yes, never looked on how the data came in, only thought the problem
was in the drawing ;)
the most portable way is the best - what calls is available and will
be used in the windows client?

On Wed, Oct 12, 2011 at 11:23 PM, Marc-André Moreau
<marcandre.mor...@gmail.com> wrote:
> Reading more about XDrawLines, I think I understand more:
> http://tronche.com/gui/x/xlib/graphics/drawing/XDrawLines.html
> The current polyline parsing code is converting between relative to absolute
> coordinates for each point. The original data is given as a first point in
> absolute coordinates followed by an array of points relative to each other.
> The number of points is the number of points in that array, but in total
> there is one point more if we include the first one which is not included in
> the array. The current code is probably missing one point.
> I could modify the orders parsing to put the first point in absolute
> coordinates as the first element of the point array, followed by the point
> array in relative coordinates to the previous point. Converting that array
> to an array of XPoints and passing it to XDrawLines along with
> CoordModePrevious should then behave properly.
>
> On Wed, Oct 12, 2011 at 5:04 PM, Christian Nilsson <nik...@gmail.com> wrote:
>>
>> Ok i think i understand how invalidate works now, and it did not have
>> anything to do with the display problem.
>> Thanks Marc-André for giving me the push to mangle this out.
>>
>> Found that the polygon was never closed. Maybe there is some better X
>> call to do this?
>>
>> For reference I attached images how the memory bar is drawn in taskmgr
>> with the different modes. (color forced to red in code)
>> with CoordModePrevious we get a diagonal line.
>> with CoordModeOrigin we get a U, the top line is not drawn, but it
>> looks more correct.
>>
>> and then we have the patch this is mostly for debugging. but what it
>> also does is to draw the last line of the poly, back to the start
>> point.
>> This gives the last image CoordModeOrigin_ExtraPoint.
>> removing the forced red color now draws the new message window in
>> Outlook correctly for me.
>>
>>
>> I noted that it works with just
>> points = xmalloc(sizeof(XPoint) * polyline->numPoints);
>> No extra +1 for the counter, I'm not sure witch are most correct?
>>
>>
>>
>> On Wed, Oct 12, 2011 at 10:05 PM, Marc-André Moreau
>> <marcandre.mor...@gmail.com> wrote:
>> > 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