Merge: Codechange: Use null pointer literal instead of the NULL macro
This commit is contained in:
@@ -144,16 +144,16 @@ static struct {
|
||||
/** Handle to our worker thread. */
|
||||
static std::thread _dmusic_thread;
|
||||
/** Event to signal the thread that it should look at a state change. */
|
||||
static HANDLE _thread_event = NULL;
|
||||
static HANDLE _thread_event = nullptr;
|
||||
/** Lock access to playback data that is not thread-safe. */
|
||||
static std::mutex _thread_mutex;
|
||||
|
||||
/** The direct music object manages buffers and ports. */
|
||||
static IDirectMusic *_music = NULL;
|
||||
static IDirectMusic *_music = nullptr;
|
||||
/** The port object lets us send MIDI data to the synthesizer. */
|
||||
static IDirectMusicPort *_port = NULL;
|
||||
static IDirectMusicPort *_port = nullptr;
|
||||
/** The buffer object collects the data to sent. */
|
||||
static IDirectMusicBuffer *_buffer = NULL;
|
||||
static IDirectMusicBuffer *_buffer = nullptr;
|
||||
/** List of downloaded DLS instruments. */
|
||||
static std::vector<IDirectMusicDownload *> _dls_downloads;
|
||||
|
||||
@@ -441,7 +441,7 @@ bool DLSFile::LoadFile(const TCHAR *file)
|
||||
DEBUG(driver, 2, "DMusic: Try to load DLS file %s", FS2OTTD(file));
|
||||
|
||||
FILE *f = _tfopen(file, _T("rb"));
|
||||
if (f == NULL) return false;
|
||||
if (f == nullptr) return false;
|
||||
|
||||
FileCloser f_scope(f);
|
||||
|
||||
@@ -882,13 +882,13 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
|
||||
if ((caps.dwFlags & (DMUS_PC_DLS | DMUS_PC_DLS2)) != 0 && (caps.dwFlags & DMUS_PC_GMINHARDWARE) == 0) {
|
||||
DLSFile dls_file;
|
||||
|
||||
if (user_dls == NULL) {
|
||||
if (user_dls == nullptr) {
|
||||
/* Try loading the default GM DLS file stored in the registry. */
|
||||
HKEY hkDM;
|
||||
if (SUCCEEDED(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\DirectMusic"), 0, KEY_READ, &hkDM))) {
|
||||
TCHAR dls_path[MAX_PATH];
|
||||
DWORD buf_size = sizeof(dls_path); // Buffer size as to be given in bytes!
|
||||
if (SUCCEEDED(RegQueryValueEx(hkDM, _T("GMFilePath"), NULL, NULL, (LPBYTE)dls_path, &buf_size))) {
|
||||
if (SUCCEEDED(RegQueryValueEx(hkDM, _T("GMFilePath"), nullptr, nullptr, (LPBYTE)dls_path, &buf_size))) {
|
||||
TCHAR expand_path[MAX_PATH * 2];
|
||||
ExpandEnvironmentStrings(dls_path, expand_path, lengthof(expand_path));
|
||||
if (!dls_file.LoadFile(expand_path)) DEBUG(driver, 1, "Failed to load default GM DLS file from registry");
|
||||
@@ -909,7 +909,7 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
|
||||
}
|
||||
|
||||
/* Get download port and allocate download IDs. */
|
||||
IDirectMusicPortDownload *download_port = NULL;
|
||||
IDirectMusicPortDownload *download_port = nullptr;
|
||||
if (FAILED(_port->QueryInterface(IID_IDirectMusicPortDownload, (LPVOID *)&download_port))) return "Can't get download port";
|
||||
|
||||
DWORD dlid_wave = 0, dlid_inst = 0;
|
||||
@@ -923,7 +923,7 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
|
||||
|
||||
/* Download wave data. */
|
||||
for (DWORD i = 0; i < dls_file.waves.size(); i++) {
|
||||
IDirectMusicDownload *dl_wave = NULL;
|
||||
IDirectMusicDownload *dl_wave = nullptr;
|
||||
if (FAILED(download_port->AllocateBuffer((DWORD)(sizeof(WAVE_DOWNLOAD) + dwAppend * dls_file.waves[i].fmt.wf.nBlockAlign + dls_file.waves[i].data.size()), &dl_wave))) {
|
||||
download_port->Release();
|
||||
return "Can't allocate wave download buffer";
|
||||
@@ -987,7 +987,7 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
|
||||
i_size += offsets * sizeof(ULONG);
|
||||
|
||||
/* Allocate download buffer. */
|
||||
IDirectMusicDownload *dl_inst = NULL;
|
||||
IDirectMusicDownload *dl_inst = nullptr;
|
||||
if (FAILED(download_port->AllocateBuffer((DWORD)i_size, &dl_inst))) {
|
||||
download_port->Release();
|
||||
return "Can't allocate instrument download buffer";
|
||||
@@ -1088,19 +1088,19 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
|
||||
download_port->Release();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
const char *MusicDriver_DMusic::Start(const char * const *parm)
|
||||
{
|
||||
/* Initialize COM */
|
||||
if (FAILED(CoInitializeEx(NULL, COINITBASE_MULTITHREADED))) return "COM initialization failed";
|
||||
if (FAILED(CoInitializeEx(nullptr, COINITBASE_MULTITHREADED))) return "COM initialization failed";
|
||||
|
||||
/* Create the DirectMusic object */
|
||||
if (FAILED(CoCreateInstance(
|
||||
CLSID_DirectMusic,
|
||||
NULL,
|
||||
nullptr,
|
||||
CLSCTX_INPROC,
|
||||
IID_IDirectMusic,
|
||||
(LPVOID*)&_music
|
||||
@@ -1109,7 +1109,7 @@ const char *MusicDriver_DMusic::Start(const char * const *parm)
|
||||
}
|
||||
|
||||
/* Assign sound output device. */
|
||||
if (FAILED(_music->SetDirectSound(NULL, NULL))) return "Can't set DirectSound interface";
|
||||
if (FAILED(_music->SetDirectSound(nullptr, nullptr))) return "Can't set DirectSound interface";
|
||||
|
||||
/* MIDI events need to be send to the synth in time before their playback time
|
||||
* has come. By default, we try send any events at least 50 ms before playback. */
|
||||
@@ -1152,7 +1152,7 @@ const char *MusicDriver_DMusic::Start(const char * const *parm)
|
||||
params.dwSize = sizeof(DMUS_PORTPARAMS);
|
||||
params.dwValidParams = DMUS_PORTPARAMS_CHANNELGROUPS;
|
||||
params.dwChannelGroups = 1;
|
||||
if (FAILED(_music->CreatePort(guidPort, ¶ms, &_port, NULL))) return "Failed to create port";
|
||||
if (FAILED(_music->CreatePort(guidPort, ¶ms, &_port, nullptr))) return "Failed to create port";
|
||||
/* Activate port. */
|
||||
if (FAILED(_port->Activate(TRUE))) return "Failed to activate port";
|
||||
|
||||
@@ -1162,19 +1162,19 @@ const char *MusicDriver_DMusic::Start(const char * const *parm)
|
||||
desc.dwSize = sizeof(DMUS_BUFFERDESC);
|
||||
desc.guidBufferFormat = KSDATAFORMAT_SUBTYPE_DIRECTMUSIC;
|
||||
desc.cbBuffer = 1024;
|
||||
if (FAILED(_music->CreateMusicBuffer(&desc, &_buffer, NULL))) return "Failed to create music buffer";
|
||||
if (FAILED(_music->CreateMusicBuffer(&desc, &_buffer, nullptr))) return "Failed to create music buffer";
|
||||
|
||||
/* On soft-synths (e.g. the default DirectMusic one), we might need to load a wavetable set to get music. */
|
||||
const char *dls = LoadDefaultDLSFile(GetDriverParam(parm, "dls"));
|
||||
if (dls != NULL) return dls;
|
||||
if (dls != nullptr) return dls;
|
||||
|
||||
/* Create playback thread and synchronization primitives. */
|
||||
_thread_event = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||
if (_thread_event == NULL) return "Can't create thread shutdown event";
|
||||
_thread_event = CreateEvent(nullptr, FALSE, FALSE, nullptr);
|
||||
if (_thread_event == nullptr) return "Can't create thread shutdown event";
|
||||
|
||||
if (!StartNewThread(&_dmusic_thread, "ottd:dmusic", &MidiThreadProc)) return "Can't create MIDI output thread";
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -1194,34 +1194,34 @@ void MusicDriver_DMusic::Stop()
|
||||
|
||||
/* Unloaded any instruments we loaded. */
|
||||
if (_dls_downloads.size() > 0) {
|
||||
IDirectMusicPortDownload *download_port = NULL;
|
||||
IDirectMusicPortDownload *download_port = nullptr;
|
||||
_port->QueryInterface(IID_IDirectMusicPortDownload, (LPVOID *)&download_port);
|
||||
|
||||
/* Instruments refer to waves. As the waves are at the beginning of the download list,
|
||||
* do the unload from the back so that references are cleared properly. */
|
||||
for (std::vector<IDirectMusicDownload *>::reverse_iterator i = _dls_downloads.rbegin(); download_port != NULL && i != _dls_downloads.rend(); i++) {
|
||||
for (std::vector<IDirectMusicDownload *>::reverse_iterator i = _dls_downloads.rbegin(); download_port != nullptr && i != _dls_downloads.rend(); i++) {
|
||||
download_port->Unload(*i);
|
||||
(*i)->Release();
|
||||
}
|
||||
_dls_downloads.clear();
|
||||
|
||||
if (download_port != NULL) download_port->Release();
|
||||
if (download_port != nullptr) download_port->Release();
|
||||
}
|
||||
|
||||
if (_buffer != NULL) {
|
||||
if (_buffer != nullptr) {
|
||||
_buffer->Release();
|
||||
_buffer = NULL;
|
||||
_buffer = nullptr;
|
||||
}
|
||||
|
||||
if (_port != NULL) {
|
||||
if (_port != nullptr) {
|
||||
_port->Activate(FALSE);
|
||||
_port->Release();
|
||||
_port = NULL;
|
||||
_port = nullptr;
|
||||
}
|
||||
|
||||
if (_music != NULL) {
|
||||
if (_music != nullptr) {
|
||||
_music->Release();
|
||||
_music = NULL;
|
||||
_music = nullptr;
|
||||
}
|
||||
|
||||
CloseHandle(_thread_event);
|
||||
|
||||
Reference in New Issue
Block a user