Re: gtkmozembed: why kill itself in destructor?

2009-01-14 Thread Eero Tamminen
Hi,

ext Zhihai Wang wrote:
 Deal all,
 
 In EmbedPrivate.cpp,
 
 EmbedPrivate::~EmbedPrivate()
 {
   sWindowList-RemoveElement(this);
   sWidgetCount--;
   mNeedFav = PR_FALSE;
   if (mProgress)
 mProgress-Shutdown();
   if (mEventListener)
 mEventListener-Shutdown();
   mOwningWidget = nsnull;
   if (sWidgetCount) return;
   gboolean bval = FALSE;
   if (gtk_moz_embed_common_get_pref
 (G_TYPE_BOOLEAN,gtkmozembed.no_destroy_on_last_window, bval)  bval)
 return;
   int pid = getpid();
   EmbedCommon::DeleteInstance();
   EmbedGlobalHistory::DeleteInstance();
   kill (pid, SIGUSR1);
   kill (pid, SIGKILL);
 }
 
 Why shall we kill pid in the end? Can't the program exit normally?

AFAIK it can be quite a bit faster.

Normal process exit goes through a lot of destructor code,
freeing things that are anyway freed by the operating system
when process terminates.  Browser is threaded, so maybe that
the destructors use locking too...


- Eero

on average free usually takes more time than allocation.
___
maemo-developers mailing list
maemo-developers@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-developers


Re: gtkmozembed: why kill itself in destructor?

2009-01-14 Thread Marius Gedminas
On Wed, Jan 14, 2009 at 02:27:04PM +0200, Eero Tamminen wrote:
 ext Zhihai Wang wrote:
  Deal all,
  
  In EmbedPrivate.cpp,
  
  EmbedPrivate::~EmbedPrivate()
  {
sWindowList-RemoveElement(this);
sWidgetCount--;
mNeedFav = PR_FALSE;
if (mProgress)
  mProgress-Shutdown();
if (mEventListener)
  mEventListener-Shutdown();
mOwningWidget = nsnull;
if (sWidgetCount) return;
gboolean bval = FALSE;
if (gtk_moz_embed_common_get_pref
  (G_TYPE_BOOLEAN,gtkmozembed.no_destroy_on_last_window, bval)  bval)
  return;
int pid = getpid();
EmbedCommon::DeleteInstance();
EmbedGlobalHistory::DeleteInstance();
kill (pid, SIGUSR1);
kill (pid, SIGKILL);
  }
  
  Why shall we kill pid in the end? Can't the program exit normally?
 
 AFAIK it can be quite a bit faster.
 
 Normal process exit goes through a lot of destructor code,
 freeing things that are anyway freed by the operating system
 when process terminates.  Browser is threaded, so maybe that
 the destructors use locking too...

That's what the _exit() function from unistd.h is for, isn't it?

Marius Gedminas
-- 
Don't trust a statistic you haven't faked yourself.
-- Seen in another posting by Markus Kuhn


signature.asc
Description: Digital signature
___
maemo-developers mailing list
maemo-developers@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-developers


Re: gtkmozembed: why kill itself in destructor?

2009-01-14 Thread Eero Tamminen
Hi,

ext Marius Gedminas wrote:
   kill (pid, SIGUSR1);
   kill (pid, SIGKILL);
 }

 Why shall we kill pid in the end? Can't the program exit normally?
 AFAIK it can be quite a bit faster.

 Normal process exit goes through a lot of destructor code,
 freeing things that are anyway freed by the operating system
 when process terminates.  Browser is threaded, so maybe that
 the destructors use locking too...
 
 That's what the _exit() function from unistd.h is for, isn't it?

I guess it could be used instead.  Maybe somebody wants to
file a bug?  (I think that unlike SIGKILL, debugger can
catch _exit())


- Eero
___
maemo-developers mailing list
maemo-developers@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-developers