Windows: Less warnings when compiling

This commit is contained in:
UnknownShadow200 2024-01-04 22:31:31 +11:00
parent 9cc6ae25da
commit 5f96ca2eac
4 changed files with 32 additions and 21 deletions

View file

@ -2369,6 +2369,7 @@ static void RegisterDefaultModels(void) {
HumanoidModel_Register();
MakeModel(&human_model);
Models.Human = &human_model;
BlockModel_Register();
ChickenModel_Register();
CreeperModel_Register();
@ -2379,7 +2380,6 @@ static void RegisterDefaultModels(void) {
SpiderModel_Register();
ZombieModel_Register();
BlockModel_Register();
ChibiModel_Register();
HeadModel_Register();
SittingModel_Register();

View file

@ -663,16 +663,20 @@ static cc_result Process_RawGetExePath(cc_winstring* path, int* len) {
}
cc_result Process_StartGame2(const cc_string* args, int numArgs) {
union STARTUPINFO_union {
STARTUPINFOW wide;
STARTUPINFOA ansi;
} si = { 0 }; // less compiler warnings this way
cc_winstring path;
cc_string argv; char argvBuffer[NATIVE_STR_LEN];
STARTUPINFOW si = { 0 };
PROCESS_INFORMATION pi = { 0 };
cc_winstring raw;
cc_result res;
int len, i;
if ((res = Process_RawGetExePath(&path, &len))) return res;
si.cb = sizeof(STARTUPINFOW);
si.wide.cb = sizeof(STARTUPINFOW);
String_InitArray(argv, argvBuffer);
/* Game doesn't actually care about argv[0] */
@ -689,11 +693,11 @@ cc_result Process_StartGame2(const cc_string* args, int numArgs) {
if (path.uni[0]) {
if (!CreateProcessW(path.uni, raw.uni, NULL, NULL,
false, 0, NULL, NULL, &si, &pi)) return GetLastError();
false, 0, NULL, NULL, &si.wide, &pi)) return GetLastError();
} else {
/* Windows 9x does not support W API functions */
if (!CreateProcessA(path.ansi, raw.ansi, NULL, NULL,
false, 0, NULL, NULL, &si, &pi)) return GetLastError();
false, 0, NULL, NULL, &si.ansi, &pi)) return GetLastError();
}
/* Don't leak memory for process return code */

View file

@ -6,6 +6,7 @@
#define NOSERVICE
#define NOMCX
#define NOIME
#define NOMINMAX
#include <windows.h>
#define SECURITY_WIN32
#include <sspi.h>

View file

@ -558,9 +558,13 @@ static void ShowDialogCore(const char* title, const char* msg) {
static cc_result OpenSaveFileDialog(const cc_string* filters, FileDialogCallback callback, cc_bool load,
const char* const* fileExts, const cc_string* defaultName) {
union OPENFILENAME_union {
OPENFILENAMEW wide;
OPENFILENAMEA ansi;
} ofn = { 0 }; // less compiler warnings this way
cc_string path; char pathBuffer[NATIVE_STR_LEN];
cc_winstring str = { 0 };
OPENFILENAMEW ofn = { 0 };
cc_winstring filter;
cc_result res;
BOOL ok;
@ -571,35 +575,37 @@ static cc_result OpenSaveFileDialog(const cc_string* filters, FileDialogCallback
/* NOTE: OPENFILENAME_SIZE_VERSION_400 is used instead of sizeof(OFN), because the size of */
/* OPENFILENAME increased after Windows 9x/NT4 with the addition of pvReserved and later fields */
/* (and Windows 9x/NT4 return an error if a lStructSize > OPENFILENAME_SIZE_VERSION_400 is used) */
ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
ofn.wide.lStructSize = OPENFILENAME_SIZE_VERSION_400;
/* also note that this only works when you *don't* have OFN_HOOK in Flags - if you do, then */
/* on modern Windows versions the dialogs are altered to show an old Win 9x style appearance */
/* (see https://github.com/geany/geany/issues/578 for example of this problem) */
ofn.hwndOwner = win_handle;
ofn.lpstrFile = str.uni;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = filter.uni;
ofn.nFilterIndex = 1;
ofn.Flags = OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | (load ? OFN_FILEMUSTEXIST : OFN_OVERWRITEPROMPT);
ofn.wide.hwndOwner = win_handle;
ofn.wide.lpstrFile = str.uni;
ofn.wide.nMaxFile = MAX_PATH;
ofn.wide.lpstrFilter = filter.uni;
ofn.wide.nFilterIndex = 1;
ofn.wide.Flags = OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | (load ? OFN_FILEMUSTEXIST : OFN_OVERWRITEPROMPT);
String_InitArray(path, pathBuffer);
ok = load ? GetOpenFileNameW(&ofn) : GetSaveFileNameW(&ofn);
ok = load ? GetOpenFileNameW(&ofn.wide) : GetSaveFileNameW(&ofn.wide);
if (ok) {
/* Successfully got a unicode filesystem path */
for (i = 0; i < MAX_PATH && str.uni[i]; i++) {
for (i = 0; i < MAX_PATH && str.uni[i]; i++)
{
String_Append(&path, Convert_CodepointToCP437(str.uni[i]));
}
} else if ((res = CommDlgExtendedError()) == 2) {
/* CDERR_INITIALIZATION - probably running on Windows 9x */
ofn.lpstrFile = str.ansi;
ofn.lpstrFilter = filter.ansi;
ofn.ansi.lpstrFile = str.ansi;
ofn.ansi.lpstrFilter = filter.ansi;
ok = load ? GetOpenFileNameA(&ofn) : GetSaveFileNameA(&ofn);
ok = load ? GetOpenFileNameA(&ofn.ansi) : GetSaveFileNameA(&ofn.ansi);
if (!ok) return CommDlgExtendedError();
for (i = 0; i < MAX_PATH && str.ansi[i]; i++) {
for (i = 0; i < MAX_PATH && str.ansi[i]; i++)
{
String_Append(&path, str.ansi[i]);
}
} else {
@ -607,8 +613,8 @@ static cc_result OpenSaveFileDialog(const cc_string* filters, FileDialogCallback
}
/* Add default file extension if user didn't provide one */
if (!load && ofn.nFileExtension == 0 && ofn.nFilterIndex > 0) {
String_AppendConst(&path, fileExts[ofn.nFilterIndex - 1]);
if (!load && ofn.wide.nFileExtension == 0 && ofn.wide.nFilterIndex > 0) {
String_AppendConst(&path, fileExts[ofn.wide.nFilterIndex - 1]);
}
callback(&path);
return 0;