Just pushed the fix. Let me know if this screws up something else.<br><br>Thanks,<br>Michael<br><br><div class="gmail_quote">On Wed, Sep 21, 2011 at 9:07 AM, Deepayan Sarkar <span dir="ltr">&lt;<a href="mailto:deepayan.sarkar@gmail.com">deepayan.sarkar@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">On Wed, Sep 21, 2011 at 7:22 PM, Michael Lawrence<br>
<div class="im">&lt;<a href="mailto:lawrence.michael@gene.com">lawrence.michael@gene.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
</div><div class="im">&gt; On Tue, Sep 20, 2011 at 9:48 PM, Michael Lawrence &lt;<a href="mailto:michafla@gene.com">michafla@gene.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Sep 20, 2011 at 7:40 PM, Deepayan Sarkar<br>
<br>
</div>[...]<br>
<div class="im"><br>
&gt;&gt;&gt; Here goes. Adding the gc() makes the whole thing work fine. The<br>
&gt;&gt;&gt; trivial qpen() call is required.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thanks a lot. Will look at this.<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; #----<br>
&gt;&gt;&gt; library(qtbase)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; v &lt;- Qt$QGraphicsView()<br>
&gt;&gt;&gt; v$size &lt;- qsize(300, 300)<br>
&gt;&gt;&gt; scene &lt;- Qt$QGraphicsScene()<br>
&gt;&gt;&gt; v$setScene(scene)<br>
&gt;&gt;&gt; v$show()<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; doplot &lt;- function(view, scene)<br>
&gt;&gt;&gt; {<br>
&gt;&gt;&gt;    ## gc()<br>
&gt;&gt;&gt;    scene$clear()<br>
&gt;&gt;&gt;    x &lt;- runif(2, 50, 250)<br>
&gt;&gt;&gt;    scene$addEllipse(x[1], x[2], 10, 10, qpen())<br>
&gt;&gt;&gt;    Sys.sleep(0.01)<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;<br>
&gt; The issue is that scene$clear() frees all objects, including the ellipse,<br>
&gt; but since Qt constructed the QGraphicsEllipseItem, we have no way of knowing<br>
&gt; that it has been freed, and so we cannot clear the pointer out of the hash.<br>
&gt; The fix yesterday made it so that if the R object was garbage collected, the<br>
&gt; pointer would be cleared in this situation. It may be that we can get away<br>
&gt; without adding such pointers to the hash at all, i.e., we would create a new<br>
&gt; wrapper object every time we see them. That will take a lot of thought<br>
&gt; though about the myriad of consequences.<br>
<br>
</div>Makes sense. My first attempt had been replacing view$scene() by a new<br>
scene each time, and that had no problems.<br>
<br>
I will go back to that approach for now.<br>
<font color="#888888"><br>
-Deepayan<br>
</font><div><div></div><div class="h5"><br>
&gt;<br>
&gt; Please stand by.<br>
&gt;<br>
&gt; Michael<br>
&gt;<br>
&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; niter &lt;- 0L<br>
&gt;&gt;&gt; while (TRUE)<br>
&gt;&gt;&gt; {<br>
&gt;&gt;&gt;    doplot(view = v, scene = scene)<br>
&gt;&gt;&gt;    niter &lt;- niter + 1<br>
&gt;&gt;&gt;    cat(niter, fill = TRUE)<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt; #----<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I&#39;m usually getting an error within 10 iterations.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; -Deepayan<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>