configure: Check for GetStdHandle in addition to SetConsoleTextAttribute

SetConsoleTextAttribute used to be unavailable for Windows Store apps,
but is available to them now. But GetStdHandle still is unavailable,
thus make sure to check for both functions before using code that
requires both.

Signed-off-by: Martin Storsjö <martin@martin.st>
pull/343/head
Martin Storsjö 5 years ago
parent e3fb9af6f1
commit 63418e374f
  1. 2
      configure
  2. 6
      libavutil/log.c

2
configure vendored

@ -2201,6 +2201,7 @@ SYSTEM_FUNCS="
GetProcessMemoryInfo GetProcessMemoryInfo
GetProcessTimes GetProcessTimes
getrusage getrusage
GetStdHandle
GetSystemTimeAsFileTime GetSystemTimeAsFileTime
gettimeofday gettimeofday
glob glob
@ -6040,6 +6041,7 @@ check_func_headers sys/stat.h lstat
check_func_headers windows.h GetModuleHandle check_func_headers windows.h GetModuleHandle
check_func_headers windows.h GetProcessAffinityMask check_func_headers windows.h GetProcessAffinityMask
check_func_headers windows.h GetProcessTimes check_func_headers windows.h GetProcessTimes
check_func_headers windows.h GetStdHandle
check_func_headers windows.h GetSystemTimeAsFileTime check_func_headers windows.h GetSystemTimeAsFileTime
check_func_headers windows.h LoadLibrary check_func_headers windows.h LoadLibrary
check_func_headers windows.h MapViewOfFile check_func_headers windows.h MapViewOfFile

@ -55,7 +55,7 @@ static int av_log_level = AV_LOG_INFO;
static int flags; static int flags;
#define NB_LEVELS 8 #define NB_LEVELS 8
#if defined(_WIN32) && HAVE_SETCONSOLETEXTATTRIBUTE #if defined(_WIN32) && HAVE_SETCONSOLETEXTATTRIBUTE && HAVE_GETSTDHANDLE
#include <windows.h> #include <windows.h>
static const uint8_t color[16 + AV_CLASS_CATEGORY_NB] = { static const uint8_t color[16 + AV_CLASS_CATEGORY_NB] = {
[AV_LOG_PANIC /8] = 12, [AV_LOG_PANIC /8] = 12,
@ -122,7 +122,7 @@ static int use_color = -1;
static void check_color_terminal(void) static void check_color_terminal(void)
{ {
#if defined(_WIN32) && HAVE_SETCONSOLETEXTATTRIBUTE #if defined(_WIN32) && HAVE_SETCONSOLETEXTATTRIBUTE && HAVE_GETSTDHANDLE
CONSOLE_SCREEN_BUFFER_INFO con_info; CONSOLE_SCREEN_BUFFER_INFO con_info;
con = GetStdHandle(STD_ERROR_HANDLE); con = GetStdHandle(STD_ERROR_HANDLE);
use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR") && use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR") &&
@ -157,7 +157,7 @@ static void colored_fputs(int level, int tint, const char *str)
if (level == AV_LOG_INFO/8) local_use_color = 0; if (level == AV_LOG_INFO/8) local_use_color = 0;
else local_use_color = use_color; else local_use_color = use_color;
#if defined(_WIN32) && HAVE_SETCONSOLETEXTATTRIBUTE #if defined(_WIN32) && HAVE_SETCONSOLETEXTATTRIBUTE && HAVE_GETSTDHANDLE
if (local_use_color) if (local_use_color)
SetConsoleTextAttribute(con, background | color[level]); SetConsoleTextAttribute(con, background | color[level]);
fputs(str, stderr); fputs(str, stderr);

Loading…
Cancel
Save