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  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


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  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 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