Skip to content

Commit

Permalink
SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING
Browse files Browse the repository at this point in the history
  • Loading branch information
flibitijibibo committed Sep 30, 2016
1 parent 52ae92e commit 92d700f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
11 changes: 11 additions & 0 deletions include/SDL_hints.h
Expand Up @@ -688,6 +688,17 @@ extern "C" {
*/
#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"

/**
* \brief Tell SDL not to name threads on Windows.
*
* The variable can be set to the following values:
* "0" - SDL will raise the 0x406D1388 Exception to name threads.
* This is the default behavior of SDL <= 2.0.4. (default)
* "1" - SDL will not raise this exception, and threads will be unnamed.
* For .NET languages this is required when running under a debugger.
*/
#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"

/**
* \brief An enumeration of hint priorities
*/
Expand Down
10 changes: 9 additions & 1 deletion src/thread/windows/SDL_systhread.c
Expand Up @@ -24,6 +24,7 @@

/* Win32 thread management routines for SDL */

#include "SDL_hints.h"
#include "SDL_thread.h"
#include "../SDL_thread_c.h"
#include "../SDL_systhread.h"
Expand Down Expand Up @@ -167,8 +168,15 @@ void
SDL_SYS_SetupThread(const char *name)
{
if ((name != NULL) && IsDebuggerPresent()) {
/* This magic tells the debugger to name a thread if it's listening. */
THREADNAME_INFO inf;

/* C# and friends will try to catch this Exception, let's avoid it. */
const char *hint = SDL_GetHint(SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING);
if (hint && *hint == '1') {
return;
}

/* This magic tells the debugger to name a thread if it's listening. */
SDL_zero(inf);
inf.dwType = 0x1000;
inf.szName = name;
Expand Down

0 comments on commit 92d700f

Please sign in to comment.