<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://svn.reviewboard.kde.org/r/6950/">http://svn.reviewboard.kde.org/r/6950/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On May 19th, 2012, 7:23 a.m., <b>Ian Wadham</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://svn.reviewboard.kde.org/r/6950/diff/2/?file=48003#file48003line46" style="color: black; font-weight: bold; text-decoration: underline;">/trunk/KDE/kdegames/kbounce/board.h</a>
<span style="font-weight: normal;">
(Diff revision 2)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">46</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb"> </span><span class="n">explicit</span> <span class="n">KBounceBoard</span><span class="p">(</span><span class="n">KBounceRenderer</span> <span class="o">*</span><span class="n">renderer</span><span class="p"><span class="hl">,</span></span><span class="hl"> </span><span class="n"><span class="hl">KGameCanvasAbstract</span></span><span class="hl"> </span><span class="o"><span class="hl">*</span></span><span class="n"><span class="hl">canvas</span></span><span class="hl"> </span><span class="o"><span class="hl">=</span></span><span class="hl"> </span><span class="nb"><span class="hl">NULL</span></span><span class="p"><span class="hl">,</span></span><span class="hl"> </span><span class="n"><span class="hl">QWidget</span></span><span class="hl"> </span><span class="o"><span class="hl">*</span></span><span class="n"><span class="hl">parent</span></span><span class="hl"> </span><span class="o"><span class="hl">=</span></span><span class="hl"> </span><span class="mi"><span class="hl">0</span></span><span class="p">);</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">46</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb"> </span><span class="n">explicit</span> <span class="n">KBounceBoard</span><span class="p">(</span> <span class="n">KBounceRenderer</span> <span class="o">*</span><span class="n">renderer</span><span class="hl"> </span><span class="p">);</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">47</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb"> </span><span class="o">~</span><span class="n">KBounceBoard</span><span class="p">();</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">47</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb"> </span><span class="o">~</span><span class="n">KBounceBoard</span><span class="p">();</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I am in some confusion here as to who is the (Qt) parent or owner of the KBounceBoard in the new code. Also I think you will find that QGraphicsItem and QGraphicsItemGroup are already descended from QObject, so no need to inherit QObject.</pre>
</blockquote>
<p>On May 19th, 2012, 12:20 p.m., <b>Roney Gomes</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">KBounceBoard has no parent. It happens because it is a top level item and top level items doesn't need a parent, they are just elements of the scene.
It may occur, however, that in some situations the scene is treated as the parent of top level items. It is better explained in the following excerpt I took from [1]:
"At item's position is the coordinate of the item's center point in its parent's coordinate system; sometimes referred to as parent coordinates. The scene is in this sense regarded as all parent-less items' "parent". Top level items' position are in scene coordinates."
In this case KBounceGameWidget has a pointer to a KBounceBoard object which is created and added to the scene when KBounceGameWidget's constructor is called.
Regarding your second point, you can see here [2] that QGraphicsItem is not a descendant of any other class.
[1] http://qt-project.org/doc/qt-4.8/graphicsview.html
[2] http://qt-project.org/doc/qt-4.8/qgraphicsitem.html</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Yes, you are right about the second point. It is QGraphicsScene that is descended from QObject. And you *are* doing an addItem() for KBounceBoard.
I was concerned about memory management and possible leaks. Parenting of QObject's descendants has an effect on that. The destructor of QGraphicsScene is documented as deleting all QGraphicsItem's in the scene. But what deletes your QGraphicsScene?
As far as I can see, it *will* happen, although your scene has no parent, because KBounceGameWidget::m_scene will get deleted when the widget is deleted, and the widget gets deleted because its parent is the main window. I think it is more usual to create the scene using "new" and maybe declare its parent to be some object that will get deleted or maybe delete it explicitly somewhere.
Anyway, please close this issue now.</pre>
<br />
<p>- Ian</p>
<br />
<p>On May 19th, 2012, 12:20 p.m., Roney Gomes wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://svn.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for KDE Games.</div>
<div>By Roney Gomes.</div>
<p style="color: grey;"><i>Updated May 19, 2012, 12:20 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Following the timeline defined in my proposal, here is the port of the first game.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I observed the game under the following conditions:
- Before the first match
- During a match
- Closing a match</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>/trunk/KDE/kdegames/kbounce/ball.h <span style="color: grey">(1295688)</span></li>
<li>/trunk/KDE/kdegames/kbounce/ball.cpp <span style="color: grey">(1295688)</span></li>
<li>/trunk/KDE/kdegames/kbounce/board.h <span style="color: grey">(1295688)</span></li>
<li>/trunk/KDE/kdegames/kbounce/board.cpp <span style="color: grey">(1295688)</span></li>
<li>/trunk/KDE/kdegames/kbounce/gamewidget.h <span style="color: grey">(1295688)</span></li>
<li>/trunk/KDE/kdegames/kbounce/gamewidget.cpp <span style="color: grey">(1295688)</span></li>
<li>/trunk/KDE/kdegames/kbounce/wall.h <span style="color: grey">(1295688)</span></li>
<li>/trunk/KDE/kdegames/kbounce/wall.cpp <span style="color: grey">(1295688)</span></li>
</ul>
<p><a href="http://svn.reviewboard.kde.org/r/6950/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>