explorer: Only run the systray timer when a systray icon is present.
authorAlexandre Julliard <julliard@winehq.org>
Wed, 18 Aug 2010 07:31:26 +0000 (09:31 +0200)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 18 Aug 2010 07:31:26 +0000 (09:31 +0200)
programs/explorer/systray.c

index 9a4226adb3c5f01ec64ac4346d5394bb330095d3..615768f077fc537ce1a89c6ceef806d31f2a8840 100644 (file)
@@ -340,6 +340,7 @@ static BOOL add_icon(NOTIFYICONDATAW *nid)
     icon->owner  = nid->hWnd;
     icon->display = -1;
 
+    if (list_empty( &icon_list )) SetTimer( tray_window, 1, 2000, NULL );
     list_add_tail(&icon_list, &icon->entry);
 
     modify_icon( icon, nid );
@@ -355,6 +356,7 @@ static BOOL delete_icon(struct icon *icon)
     list_remove(&icon->entry);
     DestroyIcon(icon->image);
     HeapFree(GetProcessHeap(), 0, icon);
+    if (list_empty( &icon_list )) KillTimer( tray_window, 1 );
     return TRUE;
 }
 
@@ -596,6 +598,4 @@ void initialize_systray(void)
     }
 
     if (hide_systray) do_hide_systray();
-
-    SetTimer( tray_window, 1, 2000, NULL );
 }