lundi 30 mars 2015

Mouse click on dom perfomance issues geckofx(embedded win xp sp3)

I need help to point out the bottleneck of my app. I am using geckofx browser control in winforms app, running on winxp sp3. Click event propagate to dom so slow - it might take up to couple seconds. Some log records with nlog




2015-03-30 19:05:26.3085 TRACE WM_LBUTTONDOWN
2015-03-30 19:05:27.0585 TRACE DomClick -Gecko.DOM.GeckoButtonElement



There is no such problem in win7 - it running fast on it. Here code of my mainform MainForm.cs



….
public MainForm()
{

InitializeComponent();
this.WindowState = FormWindowState.Maximized;
//catching win messages
Application.AddMessageFilter(this);

Gecko.GeckoPreferences.User["layers.accelerate-all"] = true;

this.Load += MainForm_Load;


}

void MainForm_Load(object sender, EventArgs e)
{
LogAllEvents();

}


private void LogAllEvents()
{
geckoWebBrowser.WindowSetBounds += (s, e) => { _logger.Trace("WindowSetBounds - " + e.Bounds); };
geckoWebBrowser.Paint += (s, e) => { _logger.Trace("Paint -" + e.ClipRectangle); };
geckoWebBrowser.Invalidated += (s, e) => { _logger.Trace("Invalidated -" + e.InvalidRect); };
geckoWebBrowser.DomClick += (s, e) => { _logger.Trace("DomClick -" + e.Target.ToString()); };
geckoWebBrowser.DocumentCompleted += (s, e) => { _logger.Trace("DocumentCompleted -" ); };
}



public bool PreFilterMessage(ref Message m)
{

if (m.Msg == WM_LBUTTONDOWN)
{
_logger.Trace("WM_LBUTTONDOWN");
return false;
}
else
if (m.Msg == WM_LBUTTONUP)
{
_logger.Trace("WM_LBUTTONUP");
return false;
}
else
return false;

}


MainForm.Designer.cs




// BrowserHolder
//
this.BrowserHolder.Controls.Add(this.geckoWebBrowser);
this.BrowserHolder.Dock = System.Windows.Forms.DockStyle.Fill;
this.BrowserHolder.Location = new System.Drawing.Point(0, 28);
this.BrowserHolder.Name = "BrowserHolder";
this.BrowserHolder.Size = new System.Drawing.Size(1180, 554);
this.BrowserHolder.TabIndex = 2;
//
// geckoWebBrowser
//
this.geckoWebBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
this.geckoWebBrowser.Location = new System.Drawing.Point(0, 0);
this.geckoWebBrowser.Name = "geckoWebBrowser";
this.geckoWebBrowser.Size = new System.Drawing.Size(1180, 554);
this.geckoWebBrowser.TabIndex = 0;
this.geckoWebBrowser.UseHttpActivityObserver = false;



BrowserHolder is panel that wrap webbrowser control.


I don’t have any clue what’s going on, cpu usage under 10 percent. Here’s my machine: ms windows embedded POSready 2009 ver2.0 service pack3 Intel Atom D2500 ,1.86 ghz ,1.98 gb of ram Geckofx 16 and 31 –same result – very slow click


Aucun commentaire:

Enregistrer un commentaire