<table><tr><td style="">romangg added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D12235">View Revision</a></tr></table><br /><div><div><p>According to protocol the logical size and position events should only be send</p>
<p>(i) on creation of an xdg_output object and<br />
(ii) when the size or position changed.</p>
<p>There is currently no check in the server interface, if the size and position really changed when the compositor tries to send the event. Looking at the KWin patch, this is currently done sometimes when there has been no change.</p>
<p>Maybe there should be a comparison of old and new value in KWayland to prohibit sending out events on unchanged values (this would mean saving the current values in <tt style="background: #ebebeb; font-size: 13px;">XdgOutputV1Interface::Private</tt>).</p></div></div><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D12235#inline-64380">View Inline</a><span style="color: #4b4d51; font-weight: bold;">xdgoutput_interface.cpp:83</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"> <span class="n">QSize</span> <span class="n">size</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"> <span style="color: #aa4000">bool</span> <span class="n">done</span> <span style="color: #aa2211">=</span> <span style="color: #304a96">false</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"> <span class="n">QList</span><span style="color: #aa2211"><</span><span class="n">XdgOutputV1Interface</span><span style="color: #aa2211">*></span> <span class="n">resources</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">This variable is only relevant until the compositor has sent for the first time the done event via <tt style="background: #ebebeb; font-size: 13px;">XdgOutputInterface::done()</tt>. Afterwards it is always true. Is it meant this way? If yes, could we use another name making this fact more explicit, like: <tt style="background: #ebebeb; font-size: 13px;">doneOnce</tt>?</p>
<p style="padding: 0; margin: 8px;">On the other side what if a compositor never sends the done event via <tt style="background: #ebebeb; font-size: 13px;">XdgOutputInterface::done()</tt> because the xdg output never changes its logical size or position after the compositor publishes the xdg output to clients and it expects clients to receive the current values on connecting to the resource?</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R127 KWayland</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D12235">https://phabricator.kde.org/D12235</a></div></div><br /><div><strong>To: </strong>davidedmundson, romangg<br /><strong>Cc: </strong>Frameworks, michaelh, bruns<br /></div>