From f6b9225bf5ccba811d7a24faf2e298361ed76649 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 10 Oct 2017 13:38:28 +0300 Subject: fixes #968 (Crash on Listening dynamic unload) --- plugins/ListeningTo/src/players/generic.cpp | 18 ++++----------- plugins/ListeningTo/src/players/wmp.cpp | 35 +++++++++++------------------ 2 files changed, 17 insertions(+), 36 deletions(-) (limited to 'plugins/ListeningTo/src/players') diff --git a/plugins/ListeningTo/src/players/generic.cpp b/plugins/ListeningTo/src/players/generic.cpp index e6a7a77c7b..db11f757d7 100644 --- a/plugins/ListeningTo/src/players/generic.cpp +++ b/plugins/ListeningTo/src/players/generic.cpp @@ -1,4 +1,4 @@ -/* +/* Copyright (C) 2005-2009 Ricardo Pescuma Domenecci This is free software; you can redistribute it and/or @@ -14,7 +14,7 @@ Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this file; see the file license.txt. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. +Boston, MA 02111-1307, USA. */ #include "../stdafx.h" @@ -55,10 +55,6 @@ static LRESULT CALLBACK ReceiverWndProc(HWND hWnd, UINT message, WPARAM wParam, } break; - case WM_DESTROY: - PostQuitMessage(0); - break; - default: return DefWindowProc(hWnd, message, wParam, lParam); } @@ -73,19 +69,15 @@ GenericPlayer::GenericPlayer() received[0] = L'\0'; singleton = this; - WNDCLASS wc = { 0 }; + WNDCLASS wc = {}; wc.lpfnWndProc = ReceiverWndProc; wc.hInstance = hInst; wc.lpszClassName = MIRANDA_WINDOWCLASS; - RegisterClass(&wc); - hWnd = CreateWindow(MIRANDA_WINDOWCLASS, LPGENW("Miranda ListeningTo receiver"), - 0, 0, 0, 0, 0, NULL, NULL, hInst, NULL); + hWnd = CreateWindow(MIRANDA_WINDOWCLASS, LPGENW("Miranda ListeningTo receiver"), 0, 0, 0, 0, 0, NULL, NULL, hInst, NULL); } - - GenericPlayer::~GenericPlayer() { if (hTimer != NULL) { @@ -100,8 +92,6 @@ GenericPlayer::~GenericPlayer() singleton = NULL; } - - void GenericPlayer::ProcessReceived() { mir_cslockfull lck(cs); diff --git a/plugins/ListeningTo/src/players/wmp.cpp b/plugins/ListeningTo/src/players/wmp.cpp index f7d2ab6df2..a78f6f3a57 100644 --- a/plugins/ListeningTo/src/players/wmp.cpp +++ b/plugins/ListeningTo/src/players/wmp.cpp @@ -33,15 +33,13 @@ WindowsMediaPlayer::WindowsMediaPlayer() received[0] = '\0'; singleton = this; - WNDCLASS wc = { 0 }; + WNDCLASS wc = {}; wc.lpfnWndProc = ReceiverWndProc; wc.hInstance = hInst; wc.lpszClassName = WMP_WINDOWCLASS; - RegisterClass(&wc); - hWnd = CreateWindow(WMP_WINDOWCLASS, LPGENW("Miranda ListeningTo WMP receiver"), - 0, 0, 0, 0, 0, NULL, NULL, hInst, NULL); + hWnd = CreateWindow(WMP_WINDOWCLASS, LPGENW("Miranda ListeningTo WMP receiver"), 0, 0, 0, 0, 0, NULL, NULL, hInst, NULL); } WindowsMediaPlayer::~WindowsMediaPlayer() @@ -142,28 +140,21 @@ void WindowsMediaPlayer::NewData(const WCHAR *data, size_t len) static LRESULT CALLBACK ReceiverWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - switch (message) { - case WM_COPYDATA: - { - if (!loaded) - return FALSE; - - if (singleton == NULL || !singleton->enabled) - return FALSE; + if (message == WM_COPYDATA) { + if (!loaded) + return FALSE; - COPYDATASTRUCT* pData = (PCOPYDATASTRUCT)lParam; - if (pData->dwData != 0x547 || pData->cbData == 0 || pData->lpData == NULL) - return FALSE; + if (singleton == NULL || !singleton->enabled) + return FALSE; - if (singleton != NULL) - singleton->NewData((WCHAR *)pData->lpData, pData->cbData / 2); + COPYDATASTRUCT* pData = (PCOPYDATASTRUCT)lParam; + if (pData->dwData != 0x547 || pData->cbData == 0 || pData->lpData == NULL) + return FALSE; - return TRUE; - } + if (singleton != NULL) + singleton->NewData((WCHAR *)pData->lpData, pData->cbData / 2); - case WM_DESTROY: - PostQuitMessage(0); - break; + return TRUE; } return DefWindowProc(hWnd, message, wParam, lParam); -- cgit v1.2.3