------------------------------------------------------------ revno: 2399 committer: poy <p...@123gen.com> branch nick: trunk timestamp: Thu 2011-01-27 18:35:08 +0100 message: Avoid crashes when closing from the taskbar too often modified: changelog.txt dwt/src/Taskbar.cpp
-- lp:dcplusplus https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk Your team Dcplusplus-team is subscribed to branch lp:dcplusplus. To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'changelog.txt' --- changelog.txt 2011-01-25 12:17:48 +0000 +++ changelog.txt 2011-01-27 17:35:08 +0000 @@ -1,4 +1,5 @@ * Prevent a remote crash triggered via malformed user commands (poy) +* Avoid crashes when closing from the taskbar too often (poy) -- 0.781 2011-01-12 -- * Add a dummy serial number to TLS certs to satisfy some parsers (poy) === modified file 'dwt/src/Taskbar.cpp' --- dwt/src/Taskbar.cpp 2011-01-02 17:12:02 +0000 +++ dwt/src/Taskbar.cpp 2011-01-27 17:35:08 +0000 @@ -43,16 +43,16 @@ static const UINT taskbarButtonMsg = ::RegisterWindowMessage(_T("TaskbarButtonCreated")); typedef HRESULT (WINAPI *t_DwmInvalidateIconicBitmaps)(HWND); -static t_DwmInvalidateIconicBitmaps DwmInvalidateIconicBitmaps; +static t_DwmInvalidateIconicBitmaps DwmInvalidateIconicBitmaps = 0; typedef HRESULT (WINAPI *t_DwmSetIconicLivePreviewBitmap)(HWND, HBITMAP, POINT*, DWORD); -static t_DwmSetIconicLivePreviewBitmap DwmSetIconicLivePreviewBitmap; +static t_DwmSetIconicLivePreviewBitmap DwmSetIconicLivePreviewBitmap = 0; typedef HRESULT (WINAPI *t_DwmSetIconicThumbnail)(HWND, HBITMAP, DWORD); -static t_DwmSetIconicThumbnail DwmSetIconicThumbnail; +static t_DwmSetIconicThumbnail DwmSetIconicThumbnail = 0; typedef HRESULT (WINAPI *t_DwmSetWindowAttribute)(HWND, DWORD, LPCVOID, DWORD); -static t_DwmSetWindowAttribute DwmSetWindowAttribute; +static t_DwmSetWindowAttribute DwmSetWindowAttribute = 0; Taskbar::Taskbar() : taskbar(0), @@ -150,8 +150,10 @@ window->setVisible(true); } }); - proxy->onClosing([tab]() -> bool { - tab->close(true); + proxy->onClosing([this, tab]() -> bool { + if(window->getEnabled()) { + tab->close(true); + } return false; // don't close the proxy window just yet; wait for removeFromTaskbar. }); @@ -219,7 +221,7 @@ BitmapPtr bitmap_full(new Bitmap(::CreateDIBSection(canvas.handle(), &info, DIB_RGB_COLORS, 0, 0, 0))); CompatibleCanvas canvas_full(canvas.handle()); - Canvas::Selector select_full(canvas_full, *bitmap_full); + auto select_full(canvas_full.select(*bitmap_full)); tab->sendMessage(WM_PRINT, reinterpret_cast<WPARAM>(canvas_full.handle()), PRF_CLIENT | PRF_NONCLIENT | PRF_CHILDREN | PRF_ERASEBKGND); @@ -242,7 +244,7 @@ BitmapPtr bitmap_thumb(new Bitmap(::CreateDIBSection(canvas.handle(), &info, DIB_RGB_COLORS, 0, 0, 0))); CompatibleCanvas canvas_thumb(canvas.handle()); - Canvas::Selector select_thumb(canvas_thumb, *bitmap_thumb); + auto select_thumb(canvas_thumb.select(*bitmap_thumb)); ::SetStretchBltMode(canvas_thumb.handle(), HALFTONE); ::SetBrushOrgEx(canvas_thumb.handle(), 0, 0, 0);
_______________________________________________ Mailing list: https://launchpad.net/~linuxdcpp-team Post to : linuxdcpp-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~linuxdcpp-team More help : https://help.launchpad.net/ListHelp