[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: intl3_svn.dll & another TSVN dlls

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: 2007-05-22 22:13:50 CEST

George Hazan wrote:
> Hello, Stefan!
> Tue, 22 May 2007 20:03:47 +0200 you wrote:
>
>>> Why these dlls are being loaded into almost any programs running on my
>>> computer? For example, into Miranda IM, which never runs any
>>> SVN-specific
>>> code or explorer windows. How can I avoid it?
> SK> Settings dialog->Icon overlays->Show overlays only in explorer
>
> It doesn't help.

you have to restart the apps for this to take effect.

>>> If I do understand things correctly, they should be loaded only by
>>> explorer.exe or programs like file managers.
> SK> Or any program that uses a file-open/file-save dialog, because that's a
> SK> shell dialog. And TSVN is a shell extension, which means the shell will
> SK> load TSVN automatically before showing those dialogs.
>
> There're a load of programs which are statically linked with the
> SHELL32.DLL, but they don't load TSVN. For example, FAR (File & Archives
> Manager).

Just linking against the shell32.dll isn't enough. You have to call
certain API's inside the shell32.dll to actually make it load the
extensions.

> SK> You don't understand: shell32.dll loads all shell extensions, but your
> SK> applications load shell32.dll.
>
> I do understand the situation :) but, as I said above, the direct
> linking with SHELL32 doesn't result to shell extensions loading. Yes,
> Bill suxx, but not that strong :)
>
> These extensions are being loaded on call of shell dialogs or on a call
> of ShellExecute(), but I'm pretty sure that Miranda doesn't call noone
> of them. It just display the contact list window, and all TSVN dlls are
> there.

Well, you could look at the sourcecode of Miranda and find out.

> SK> And I have no idea how dynamic linking would change anything here. The
> SK> tsvn dll *is* linked dynamically, and the *.so files are loaded
> SK> dynamically too.
>
> Well, the TSVN's engine is a piece of binary code of ~800K. Imagine the
> situation when the extension dll does only menus, thus its size can be
> quite small, for example, 80K (~30 icons + 20K of code). Then, if a user
> clicks on that menu, and only in this case, the entire engine gets
> loaded into memory by calling LoadLibrary. Rught now the whole engine is
> compiled statically, i.e. the hook dll calls everything else.

That simply won't work. The TSVN shell extension (there are in fact
several of them, all inside the same dll: context menu, overlays, column
handler, ...) *require* parts of the Subversion lib to work. Your
example that '~30 icons + 20K of code' is simply not possible. The
context menu extension has to parse the working copy and find out its
status to show the menu entries. Otherwise we'd have to show *all*
entries all the time.

> SK> But what exactly is your problem here?
>
> My problem is that I've got the whole bunch of some nonshared dlls into
> almost any process in my Windows. It's ok for the 27K hook dll of my
> keyboard switcher, but 800K of code + some private data are imho too much.

I still don't see your problem! Do you have not enough RAM? Is your
system slow?
Let's see:
Assuming you have 512MB RAM (most users have more than that), then let's
assume that the OS itself uses a quarter of this, which will leave you
with 384MB.
That means you could load the TSVN dll about 490 times. And btw: the
TSVN dll is shared between processes if Windows *can* share it (depends
on the processes loading it, and what privileges they run with).

Let's do some other calculations:
Size of Miranda: ~8MB, 800kB added by the TSVN dll --> 10%

You should maybe complain on the Miranda support forum/mailing-list
about this. After all: they're loading the dll without an obvious reason.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: users-help@tortoisesvn.tigris.org
Received on Tue May 22 22:14:07 2007

This is an archived mail posted to the TortoiseSVN Users mailing list.