<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<br><div><div>On Jun 26, 2007, at 2:40 AM, Mark Doliner wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><blockquote type="cite"><p style="margin: 0.0px 0.0px 0.0px 10.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">When additional results<span class="Apple-converted-space"> </span></font></p> <p style="margin: 0.0px 0.0px 0.0px 10.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">arrive, I can<span class="Apple-converted-space">  </span>simply reference my object via the data parameter of <span class="Apple-converted-space"> </span></font></p> <p style="margin: 0.0px 0.0px 0.0px 10.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">notify_searchresults_new_rows. So far, that should work fine.<span class="Apple-converted-space"> </span></font></p> <p style="margin: 0.0px 0.0px 0.0px 10.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">However, when the user closes the search results window, and<span class="Apple-converted-space"> </span></font></p> <p style="margin: 0.0px 0.0px 0.0px 10.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica"><span class="Apple-converted-space"> </span>afterwards notify_searchresults_new_rows gets called, I'd get a<span class="Apple-converted-space"> </span></font></p> <p style="margin: 0.0px 0.0px 0.0px 10.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica"><span class="Apple-converted-space"> </span>dangling pointer and the app would crash. There's no way to tell<span class="Apple-converted-space"> </span></font></p> <p style="margin: 0.0px 0.0px 0.0px 10.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">the<span class="Apple-converted-space">  </span>API that I don't want to receive any further information.<span class="Apple-converted-space"> </span></font></p> </blockquote><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">When the user clicks the red bubble to close the search results window, you</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">should call either purple_notify_close() or purple_notify_close_with_handle()</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">to destroy the libpurple side of the search results window.<span class="Apple-converted-space">  </span>That will call</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">the close_notify ui_op in Adium (your code), which should in turn close the</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">search results window.<span class="Apple-converted-space">  </span>Does that make sense?</font></p> </blockquote></div><br><div>What if you return a retained (rather than autoreleased) pointer to your windowController when the search results window is first handed back to libpurple (adiumPurpleNotifySearchResults) , then release that when the close_notify op is called (adiumPurpleNotifyClose)?  Conceptually, that's doing memory management as Mark suggested -- letting the libpurple search results API 'own' the window controller. There can be any number of owners -- the beauty of reference counting!</div><div><br></div><div>(The other notify functions may need to be modified to behave similarly... though I don't think so since we simply ignore the notifyClose ui_op for those types)</div><div><br class="webkit-block-placeholder"></div><div>-Evan</div></body></html>