webkit scriptengine multiple plasmoids

2009-12-17 Thread Petri Damstén
Hi,

I'm trying to fix this bug: http://www.kde-
look.org/content/show.php/Scripted+Image?content=91749 (Error having 2 of 
them). Seems that if there is two (or more) same webkit plasmoids on desktop 
only one of them loads properly on plasma start. When same plasmoid B load is 
started before A load is finished javascript functions don't get called. This 
happens only when plasmoids are same e.g. two scripted-image plasmoids. I made 
attached patch to load plasmoids with the same plugin name in queue and it 
seems to solve this but I'm not sure if this right way to do it?

Petri
Index: webapplet.cpp
===
--- webapplet.cpp	(revision 1063166)
+++ webapplet.cpp	(working copy)
@@ -28,6 +28,7 @@
 #include QWebFrame
 #include QWebPage
 #include QFile
+#include QTimer
 
 #include Plasma/Applet
 #include Plasma/Package
@@ -67,8 +68,13 @@
 
 Plasma::WebView *page;
 bool loaded;
+KUrl url;
+QString webpage;
+static QMapQString, bool loading;
 };
 
+QMapQString, bool WebApplet::Private::loading;
+
 WebApplet::WebApplet(QObject *parent, const QVariantList args)
 : AppletScript(parent),
   d(new Private)
@@ -86,20 +92,31 @@
 d-init(this);
 
 QString webpage;
-webpage = package()-filePath(mainscript);
+d-webpage = package()-filePath(mainscript);
 
-if (webpage.isEmpty()) {
+if (d-webpage.isEmpty()) {
 kDebug()  fail! no page;
 delete d-page;
 d-page = 0;
 return false;
 }
-KUrl url(package()-filePath(html));
-kDebug()  webpage  package()-path()  url;
-d-page-mainFrame()-setHtml(dataFor(webpage), url);
+d-url = KUrl(package()-filePath(html));
+kDebug()  d-webpage  package()-path()  d-url;
+load();
 return true;
 }
 
+void WebApplet::load()
+{
+if (!d-loading.contains(package()-metadata().pluginName()) ||
+!d-loading[package()-metadata().pluginName()]) {
+d-loading[package()-metadata().pluginName()] = true;
+d-page-mainFrame()-setHtml(dataFor(d-webpage), d-url);
+} else {
+QTimer::singleShot(50, this, SLOT(load()));
+}
+}
+
 void WebApplet::paintInterface(QPainter *painter,
const QStyleOptionGraphicsItem *option,
const QRect contentsRect)
@@ -116,6 +133,7 @@
 
 void WebApplet::loadFinished(bool success)
 {
+d-loading[package()-metadata().pluginName()] = false;
 d-loaded = success;
 }
 
Index: webapplet.h
===
--- webapplet.h	(revision 1063166)
+++ webapplet.h	(working copy)
@@ -56,6 +56,7 @@
 void connectFrame(QWebFrame *);
 virtual void loadFinished(bool);
 virtual void initJsObjects();
+void load();
 
 private:
 class Private;


signature.asc
Description: This is a digitally signed message part.
___
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


Re: [Bug 208057] KRunner crashed when trying to run application (memcpy, MediaWiki::results, Wikipedia::wikipediaFinished)

2009-12-17 Thread Sebastian Kügler
On Thursday 17 December 2009 19:03:35 Jacopo De Simoi wrote:
 https://bugs.kde.org/show_bug.cgi?id=208057
 
 
 Jacopo De Simoi wilder...@gmail.com changed:
 
What|Removed |Added
 ---
 - Status|UNCONFIRMED |RESOLVED
  CC||wilder...@gmail.com
  Resolution||DUPLICATE
 
 
 
 
 --- Comment #2 from Jacopo De Simoi wilderkde gmail com  2009-12-17
  19:03:28 --- This is in fact a glibc bug, due to a race in free(), it
  should be fixed in 2.11.1
 
 *** This bug has been marked as a duplicate of bug 196207 ***
 

Do you have more information on this? KRunner has been pretty crashy lately, 
maybe 
it's worth poking packagers about this as well? Ubuntu ships glibc 2.10.1, so 
that's 
not enough...
-- 
sebas

http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9
___
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


Re: webkit scriptengine multiple plasmoids

2009-12-17 Thread Marco Martin
On Thursday 17 December 2009, Petri Damstén wrote:
 Hi,
 
 I'm trying to fix this bug: http://www.kde-
 look.org/content/show.php/Scripted+Image?content=91749 (Error having 2 of
 them). Seems that if there is two (or more) same webkit plasmoids on
  desktop only one of them loads properly on plasma start. When same
  plasmoid B load is started before A load is finished javascript functions
  don't get called. This happens only when plasmoids are same e.g. two
  scripted-image plasmoids. I made attached patch to load plasmoids with the
  same plugin name in queue and it seems to solve this but I'm not sure if
  this right way to do it?
 
 Petri
 
seems an hacky workaround, but i can'r really think about a possible real 
cause of this...
could be a bug in webkit itself, maybe has some internal sigleton class that 
gets in an inconsistent state when two pages load the same url in the same 
moment? seems terribly unlikely but...

-- 
Marco Martin
___
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel