Total Commander Forum Index Total Commander
Forum - Public Discussion and Support
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[bug] TortoiseSVN overlay icons & Vista
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> TC Fixed bugs Printable version
View previous topic :: View next topic  
Author Message
Klug
Junior Member
Junior Member


Joined: 15 Dec 2006
Posts: 10

PostPosted: Fri Dec 15, 2006 6:48 am    Post subject: [bug] TortoiseSVN overlay icons & Vista Reply with quote

After upgrading to Windows Vista RTM I faced a bug with overlay icons in TC. I was using TortoiseSVN-1.3.3.6219, which displays overlay icons for files and folders. With Windows XP this program displays overlay icons both in Explorer and in TC, while with Vista they are displayed only in Explorer (and in Speed Commander), but not in TC Sad. Screenshot: astonshell dot com/tmp/tc_svn_bug.jpg.
TortoiseSVN upgrade to 1.4.1.7992 has changed nothing, neither did TC 6.54a upgrade to 7.0 beta 2.

Please help!
Back to top
View user's profile Send private message Visit poster's website
horizon
Junior Member
Junior Member


Joined: 23 Nov 2006
Posts: 32

PostPosted: Fri Dec 15, 2006 7:50 am    Post subject: Reply with quote

btw: are you sure, you the option of showing overlay icons in tcmd enabled? (cfg-options-icons) (just to be sure Smile )
Back to top
View user's profile Send private message
Klug
Junior Member
Junior Member


Joined: 15 Dec 2006
Posts: 10

PostPosted: Fri Dec 15, 2006 11:19 am    Post subject: Reply with quote

yea, look at screenshot...
Back to top
View user's profile Send private message Visit poster's website
ghisler(Author)
Site Admin
Site Admin


Joined: 04 Feb 2003
Posts: 24621
Location: Switzerland

PostPosted: Fri Dec 15, 2006 3:08 pm    Post subject: Reply with quote

Are you using Vista 64? TC is a 32-bit program, so it can only show 32-bit shell extensions. That's not a limitation of TC, it's a limitation of Windows.
_________________
Author of Total Commander
http://www.ghisler.com
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Klug
Junior Member
Junior Member


Joined: 15 Dec 2006
Posts: 10

PostPosted: Sat Dec 16, 2006 4:29 am    Post subject: Reply with quote

We have tested both Vista versions: x32 and x64 - overlay icons are gone. In all our x64 OS, we have installed both TortoiseSVN versions, x32 & x64. BTW TC works correctly with overlay icons in Windows XP SP1 x64. In Vista x32-x64 overlay icons are visible in all OpenFileDialogs (x32) - but not in the TC Sad
(Tried to disable UAC but no luck)
Back to top
View user's profile Send private message Visit poster's website
ghisler(Author)
Site Admin
Site Admin


Joined: 04 Feb 2003
Posts: 24621
Location: Switzerland

PostPosted: Sun Dec 17, 2006 9:49 am    Post subject: Reply with quote

I will try to find out what is going on. Are just the Tortoise overays gone, or also the LNK overlays?
_________________
Author of Total Commander
http://www.ghisler.com
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Klug
Junior Member
Junior Member


Joined: 15 Dec 2006
Posts: 10

PostPosted: Mon Dec 18, 2006 3:42 am    Post subject: Reply with quote

Only Tortiose overlays disappeared, LNK overlays are displayed correctly. Moreover, Tortiose overlays are not displayed in TC even in the "Open" dialog of the built-in Lister.
In the exterior Lister.exe the overlay icons are displayed all right. Please have a look at the astonshell dot com/tmp/tc7bug.jpg (Vista RTM x32).
Back to top
View user's profile Send private message Visit poster's website
Klug
Junior Member
Junior Member


Joined: 15 Dec 2006
Posts: 10

PostPosted: Tue Dec 19, 2006 11:43 am    Post subject: Reply with quote

=============
init Log
hooking... C:\WinCmd\TOTALCMD.EXE
hope this helps!
CoCreateInstance:
{30351346-7B7D-4FCC-81B4-1E394CA267EB}, "TortoiseSVN";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
CoCreateInstance:
{30351347-7B7D-4FCC-81B4-1E394CA267EB}, "TortoiseSVN";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
CoCreateInstance:
{30351348-7B7D-4FCC-81B4-1E394CA267EB}, "TortoiseSVN";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
CoCreateInstance:
{3035134B-7B7D-4FCC-81B4-1E394CA267EB}, "TortoiseSVN";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
CoCreateInstance:
{3035134C-7B7D-4FCC-81B4-1E394CA267EB}, "TortoiseSVN";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
CoCreateInstance:
{3035134D-7B7D-4FCC-81B4-1E394CA267EB}, "TortoiseSVN";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
CoCreateInstance:
{3035134E-7B7D-4FCC-81B4-1E394CA267EB}, "TortoiseSVN";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
CoCreateInstance:
{6705C307-E2A4-499A-B6D9-8DC0CA8B2089}, "CMyOverlayIcon Object";
{0C6C4200-C589-11D0-999A-00C04FD655E1}, ""
error 0x800401F0 CoInitialize has not been called.
First-chance exception at 0x75fa3843 (kernel32.dll) in TOTALCMD.EXE: 0x000006BA: The RPC server is unavailable.
CoCreateInstance:
{77F419AA-771A-45FF-AC66-7567FA3243D3}, "SMB Share Engine";
{247BBBD9-9C50-4E7E-A055-68A1E15A3C32}, "IShareEngine"
CoCreateInstance:
{EDB5F444-CB8D-445A-A523-EC5AB6EA33C7}, "Share Manager";
{E3373025-4D9A-4676-B37F-C2C531F7FD87}, "IShareManager"
error 0x00000000 The operation completed successfully.
error 0x00000000 The operation completed successfully.
=============

Is hope enough?
Back to top
View user's profile Send private message Visit poster's website
ghisler(Author)
Site Admin
Site Admin


Joined: 04 Feb 2003
Posts: 24621
Location: Switzerland

PostPosted: Tue Dec 19, 2006 2:32 pm    Post subject: Reply with quote

It's a bug in Tortoise to assume that all calling apps have called CoInitialize. Total Commander calls InitializeOLE2 only after creating its windows, to make it start faster. I guess that Tortoise wants to hook its dlls before...
_________________
Author of Total Commander
http://www.ghisler.com
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Klug
Junior Member
Junior Member


Joined: 15 Dec 2006
Posts: 10

PostPosted: Wed Dec 20, 2006 5:14 am    Post subject: Reply with quote

>>It's a bug in Tortoise to assume that all calling apps have called CoInitialize.

Wrong!
Tortoise has nothing to do with it.

The previously mentioned CMyOverlayIcon is a test example, which can be found here:
http://www.codeproject.com/shell/overlayicon.asp
and it also doesn't work.

Without CoInitialize any overlay dll does not have a single chance to be loaded in the TC process.
The matter is that overlay icon extension is a COM-server, i.e. a dll, which can be loaded in the client process only during the CoCreateInstance function call, and no other way.
If CoCreateInstance detects that CoInitialize call was not executed beforehand, it will not even try to load the dll.

Please refer to the basics of the COM technology.

If CoInitialize was not called before OverlayManager initialization, NO OVERLAY EXTENSIONS will work!

Using debugger it is easy to find out where OverlayManager is initialized:
TC calls SHGetFileInfo:
==================
api_hook.dll!New_CoCreateInstance(const _GUID & rclsid={30351346-7B7D-4FCC-81B4-1E394CA267EB}, IUnknown * pUnkOuter=0x00000000, unsigned long dwClsContext=0x00000401, const _GUID & riid={0C6C4200-C589-11D0-999A-00C04FD655E1}, void * * ppv=0x000bef74) Line 82 C++
shell32.dll!_SHCoCreateInstance() - 0x292e5 bytes
shell32.dll!_SHExtCoCreateInstance@24() + 0x1e bytes
shell32.dll!_DCA_SHExtCoCreateInstance@16() + 0x2a bytes
shell32.dll!CFSIconOverlayManager::_s_LoadIconOverlayIdentifiers() + 0x10c bytes
shell32.dll!CFSIconOverlayManager::_InitializeHdsaIconOverlays() + 0xb bytes
shell32.dll!CFSIconOverlayManager::CreateInstance() + 0x4c bytes
shell32.dll!_IconOverlayManagerInit@0() + 0x256 bytes
shell32.dll!_GetIconOverlayManager@4() + 0x17 bytes
shell32.dll!_FileIconInit@4() + 0x15e bytes
shell32.dll!_SHGetImageList@12() + 0x90 bytes
shell32.dll!_GetFileInfoSections() + 0xaa bytes
shell32.dll!_SHGetFileInfoW@20() + 0x11b bytes
shell32.dll!_SHGetFileInfoA@20() + 0x70 bytes
TOTALCMD.EXE!00578333()
==================

despite of MSDN:
==================
You must initialize Component Object Model (COM) with CoInitialize or OleInitialize prior to calling SHGetFileInfo.
==================
This is what causes unpredictable behavior, for example, any overlay COM-dll are not loaded into the process.


>>Total Commander calls InitializeOLE2 only after creating its windows, to make it start faster.

This could work for Pentium1-133, but now such an "optimization" is useless, (first if all, because CoInitializeEx call goes very fast with Pentium3 and later, secondly, because Windows2000-XP call CoInitializeEx before the window creation anyway (in contrast to Vista, which lets the developer explicitly set CoInitializeEx parameters)), and even dangerous and harmful.

If you are so eager to keep it - please make it optional!

TC also should call ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
BEFORE the first addressing to SHGetFileInfo.
Then, TC can create its windows and call OleInitialize...

P.S.
Please look at this function
IShellIconOverlayManager::LoadNonloadedOverlayIdentifiers
Back to top
View user's profile Send private message Visit poster's website
zeflash
Junior Member
Junior Member


Joined: 28 Aug 2003
Posts: 47

PostPosted: Fri Dec 22, 2006 11:58 am    Post subject: Reply with quote

I hope this fix will be in beta3 or rc1 - I'm switching to vista and not having tortoise working properly in TC is a big issue to me!
Back to top
View user's profile Send private message
ghisler(Author)
Site Admin
Site Admin


Joined: 04 Feb 2003
Posts: 24621
Location: Switzerland

PostPosted: Fri Dec 22, 2006 12:13 pm    Post subject: Reply with quote

I have moved the initialize function in front of the window creation, but I haven't had the time to test it with Vista yet. I have to attach a different harddisk to test with Vista because it doesn't work under Vmware (my PC has 512 MB of RAM and cannot be upgraded because the chipset doesn't support more).
_________________
Author of Total Commander
http://www.ghisler.com
Back to top
View user's profile Send private message Send e-mail Visit poster's website
good_alias
Junior Member
Junior Member


Joined: 01 Mar 2006
Posts: 11

PostPosted: Sat Dec 23, 2006 4:32 am    Post subject: Same problem with 6.55 in Vista Reply with quote

It could perhaps be interesting to know that the overlay icons for TortoiseSVN (ver 1.4.1.7992) doesn't show with TotalCommander 6.55 in Vista either Sad
But normally I'm running 7.0 Beta 2.
Back to top
View user's profile Send private message Visit poster's website
zeflash
Junior Member
Junior Member


Joined: 28 Aug 2003
Posts: 47

PostPosted: Wed Jan 03, 2007 7:56 am    Post subject: Reply with quote

ghisler(Author) wrote:
I have moved the initialize function in front of the window creation, but I haven't had the time to test it with Vista yet. I have to attach a different harddisk to test with Vista because it doesn't work under Vmware (my PC has 512 MB of RAM and cannot be upgraded because the chipset doesn't support more).


Well then release a beta 3 and I'll tell you if it did the trick or not Smile
Back to top
View user's profile Send private message
ghisler(Author)
Site Admin
Site Admin


Joined: 04 Feb 2003
Posts: 24621
Location: Switzerland

PostPosted: Wed Jan 03, 2007 8:39 am    Post subject: Reply with quote

I have tested it now on Vista Final from MSDN, and it does work. The fix will be in beta 3.
_________________
Author of Total Commander
http://www.ghisler.com
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> TC Fixed bugs All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Impressum: This site is maintained by Ghisler Software GmbH

Using phpBB © 2001-2005 phpBB Group