Let's see if I can explain what is happening here, and perhaps this will give you a clue as to what might be happening and why:
Suppose you added a shortcut to one of those sub-docks in which the target application is stored on an external hard disk that spins down when not in use for a while.
When you open that sub-dock, the dock must retrieve the icon image in order to display it on the sub-dock. Now, the problem is that this icon image is stored on a hard disk that is currently not spinning.
So, the dock must first wait for the hard disk to spin up in order to retrieve the information it needs. This takes a long time and the dock can't do anything until the disk is fully accessible.
Now, even though sub-docks (unlike Shelf tabs) do not cache icon images in memory permanently (i.e.; those icon images are lost when you close the sub-dock and will have to be retrieved from disk when you open that sub-dock again), Windows itself also has a hard disk cache. Windows caches recently used files in memory in case you need to access them again soon (hard disk accesses are several orders of magnitude SLOWER than accessing files in memory).
So, when you open that same sub-dock again later on, chances are the bits of information it needs are still stored in the Windows file system cache. No disk access is needed and the sub-dock opens a lot faster the second time around.
A non-spinning hard disk is just an example. Same thing will happen if you try to access files/images stored on slow network storage.
As for sometimes seeing the 'default' icon: this is actually a 'feature' used by the dock to speed things up, or at least give you access to things even if not all icons have currently been loaded from disk.
You see, loading icons from files in disks can be - relatively speaking - a very slow process. So, if the dock (and the Shelf does this too, by the way) realizes it's taking too long to show/fetch all the icons in the sub-dock, it will open the sub-dock regardless (so you can begin to interact with it even if not all icons have been successfully retrieved yet). It will show you all the icons it has managed to retrieve until the time out, generic icons for the rest, and from then on it will update each generic icon with the proper icon has it gets them from disk.
Windows Explorer does the same, by the way, although this is more clear when you open an Explorer window showing lots of document thumbnails. Rendering thumbnails is even slower than fetching icons, so Explorer first shows the file icons and then slowly replaces them with the proper document/image/video thumbnails. This allows you to interact with the window/folder instead of having to wait for all the thumbnails to be rendered first.
To explain this further: imagine each icon on a sub-dock took 1 second to be retrieved from disk, and that you have 10 icons in it. Without this method, the first time you clicked on the sub-dock absolutely nothing would happen for 10 seconds, because the sub-dock was busy retrieving *all* the icons. You would be questioning yourself if you had actually clicked on the sub-dock. After those 10 seconds the sub-dock would pop up showing all the correct icons, but at the cost of that unacceptable delay.
What happens with this (much better) method is that the sub-dock retrieves the very first icon, notices how long it took and decides it's better to give you *some* feedback than to leave you there staring at the screen for 10 seconds without anything happening. So it opens showing the first icon properly with the remaining 9 icons being just a 'generic' icon. Within the next 9 seconds, the sub-dock will populate those generic icons, one by one, with the proper image. In the mean time you will be able to interact with the sub-dock and even close it if necessary before the process completes - something you would not be able to do without this method.
_________________ Jorge Coelho
Winstep Xtreme - Xtreme Power!
http://www.winstep.net - Winstep Software Technologies
|