Hi list,

My goal is to create webkit/gtk based browser, which can be controlled via Linux pipe (fifo).

I have made several test with webkit, but there is always "huge" memory leaks. I have used lastest webkit build: "WebKit r70732 was built on 28 October 2010". I assume that the leak is in the cache(maybe I am wrong). Amount of the memory leak is related to loaded page. So, everything to disabling cache has done. I have also set: "m_disabled = true " in the :"WebCore/loader/Cache.cpp"

I have tested both cache modes with out any effects for the memory leak:
- WEBKIT_CACHE_MODEL_WEB_BROWSER
- WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER

And same result with all methods:
- webkit_web_view_reload_bypass_cache
- webkit_web_view_load_uri
- webkit_web_view_reload





Even if I run callback function once with "gtk_widget_destroy(wk);", it does not release used memory.


Plese help me, I am desperate ;-)





Here is my testcode:

#include <gtk/gtk.h>
#include <webkit/webkit.h>
#include <stdlib.h>
#include <time.h>



static WebKitWebView* web_view;

static char *urls[] = {"http://www.utu.fi";,
                    "http://www.ts.fi";,
                    "http://www.hs.fi";,
                    "http://www.google.fi";,
                    "http://www.hs.fi";,
                    "http://www.turku.fi"};

gboolean callback (gpointer wk)
{
      g_print("loading\n");
      //webkit_web_view_load_uri(wk, urls[rand() % 6]);
      //webkit_web_view_load_uri(wk, "http://www.hs.fi";);
      webkit_web_view_reload_bypass_cache(wk);
      return TRUE;
}


int main( int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *vbox;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(window), 1024, 768);



    web_view = WEBKIT_WEB_VIEW(webkit_web_view_new ());
    gtk_widget_set_size_request(GTK_WIDGET(web_view), 1024,768);

    //webkit_set_cache_model(WEBKIT_CACHE_MODEL_WEB_BROWSER);
    webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER);

    WebKitWebSettings *settings = webkit_web_settings_new();
g_object_set(G_OBJECT(settings), "enable-offline-web-application-cache", FALSE, NULL); g_object_set(G_OBJECT(settings), "enable-private-browsing", TRUE, NULL);
    g_object_set(G_OBJECT(settings), "enable-scripts", FALSE, NULL);
    g_object_set(G_OBJECT(settings), "enable-plugins", FALSE, NULL);
    webkit_web_view_set_settings(web_view, settings);

WebKitWebBackForwardList *back_forward_list = webkit_web_view_get_back_forward_list(web_view);
    webkit_web_back_forward_list_set_limit(back_forward_list, 1);

    gtk_container_add(GTK_CONTAINER (window), GTK_WIDGET(web_view));
    webkit_web_view_load_uri(web_view, "http://www.hs.fi";);

    gtk_widget_show_all(window);

    g_timeout_add(12000, callback, web_view);
    gtk_main();

    return 0;
}






/toni


_______________________________________________
webkit-gtk mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-gtk

Reply via email to