<div dir="ltr">Hi<div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Apr 3, 2013 at 3:50 PM, Clemens Brunner <span dir="ltr"><<a href="mailto:clemens.brunner@tugraz.at" target="_blank">clemens.brunner@tugraz.at</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On 04/03/2013 03:24 PM, Andreas Pakulat wrote:<span style="color:rgb(34,34,34)"> </span></div>
</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im"></div><div class="im">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
That being said, here with Qt4.8 even a full-screen window will not<br>
cause a significant slowdown, except during the resize phase.  Once the<br>
resize is done the timer fires every 25 ms again. So I guess the<br>
calculation inside the paint function simply take some time and once the<br>
widget doesn't resize anymore the paint function is not called anymore.<br>
</blockquote>
<br></div>
OK, but (1) I was not referring to the resize phase, and (2) this only works well on Windows. On Mac OS X and Linux, the timer depends on the size of the window being updated -- for a full screen window, the timer fires every 100ms (not during the resize) because QGraphicsView cannot handle the computations within a time frame less than 100ms anymore.</blockquote>
<div><br></div><div style>As I said, with Qt4.8 I don't see this here on Linux at all, once the window is at a certain size the timer fires every 25 ms again. This is on a somewhat new system with Debians standard Qt/PyQt packages. So its not necessarily a general problem with Linux/PyQt, but might be limited to the systems you've used so far to reproduce this or a configuration thing etc.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
If you need high precision timers then you'll need to write<br>
platform-specific code. QTimer is not meant for that.<br>
<br>
Why this works better on Windows with Py(Qt/Side) can have many reasons,<br>
the whole graphicsstack is different there, the QTimer might be<br>
implemented differently there. Maybe windows delays the painting during<br>
resize somewhat more so that there are less repaint-events given to Qt<br>
or maybe the functions used in your paint() are more optimized on Windows.<br>
</blockquote>
<br></div>
Well, the fact that it does work equally well on all three platforms when I use Qt directly from a C++ program indicates that this is an issue with the Python wrapper</blockquote><div><br></div><div style>It could also be the fact that the various helpers inside your paint are slower in Python on *nix for whatever reason. Did you try further simplifying the paint function, for example simply painting 1 line across the whole rect in multiple steps? Or try out a single step? That way you'd be able to get rid of all the math which could affect the result too.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">, and not a different implementation within the Qt framework. Furthermore, since PyQt and PySide produce a Python wrapper that does work just like its C++ counterpart under Windows makes me think that it must be an implementation detail of PyQt/PySide that could probably be fixed.</blockquote>
<div><br></div><div style>I doubt there's much difference in the PyQt/PySide code between Windows and *nix, after all the C API of CPython is the same on both platforms. One difference though is the compiler being used for both - at least usually it is a different one - and of course the platform itself. Does a fixed-length sleep instead of the paint() function produce a different result on Linux? Meaning, does it matter what exactly happens in paint or that its just not a noop?</div>
<div style><br></div><div style>Andreas</div><div> </div></div></div></div>