[webkit-dev] QtConnectionObjects not cleaned up for QtOwnership objects
Kenneth Christiansen
kenneth.christiansen at openbossa.org
Tue Dec 15 14:04:28 PST 2009
This should go to the webkit-qt at lists.webkit.org list instead. Please repost
there.
Creating a bug report on bugs.webkit.org for tracking your issues is another
welcome option.
Kenneth
On Tue, Dec 15, 2009 at 5:24 PM, Andrew Webster <apwebster at gmail.com> wrote:
> For all the Qt people out there, here is my problem:
>
> We have quite a few QObjects that we are inserting into JavaScript
> using addToJavaScriptWindowObject, however because we have limited
> resources and are creating so many of these objects, we would prefer
> that they are NOT ScriptOwnership objects so that there is not as much
> duplication for each frame. This presents a problem when it comes to
> using 'connect' to handle signals. Each connect creates a
> QtConnectionObject which references the JSHTMLDocument object. The
> QtConnectionObject is never destroyed because the QObject is never
> destroyed, and this prevents most of the objects from being cleaned up
> by the gc when the page is refreshed leading to a significant memory
> leak.
>
> The solution I'm working on essentially makes the QtConnectionObject
> 'script owned' so that it is cleaned up when the script is destroyed:
>
> Index: qt_runtime.cpp
> ===================================================================
> --- qt_runtime.cpp (revision 52150)
> +++ qt_runtime.cpp (working copy)
> @@ -1527,6 +1527,11 @@
> else {
> // Store connection
> connections.insert(sender, conn);
> + // also create a script wrapper for the
> connection object, but make sure that it is destroyed when
> + // the script goes away
> + d->m_instance->rootObject()->gcProtect(
> + QtInstance::getQtInstance(conn,
> d->m_instance->rootObject(), QScriptEngine::ScriptOwnership)->
> +
> createRuntimeObject(exec->dynamicGlobalObject()->globalExec()));
> }
> } else {
> // Now to find our previous connection object. Hmm.
>
> This seems to be working in my limited tests. Can anyone comment on
> the validity of this solution?
>
>
> Thanks,
> Andrew
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>
--
Kenneth Rohde Christiansen
Technical Lead / Senior Software Engineer
Qt Labs Americas, Nokia Technology Institute, INdT
Phone +55 81 8895 6002 / E-mail kenneth.christiansen at openbossa.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20091215/556924a0/attachment.html>
More information about the webkit-dev
mailing list