Module: wine
Branch: master
Commit: ffc02008a5475d0295f7e9aa738769ee03fd694d
URL: https://gitlab.winehq.org/wine/wine/-/commit/ffc02008a5475d0295f7e9aa738769…
Author: Zhiyi Zhang <zzhang(a)codeweavers.com>
Date: Fri Apr 5 15:24:00 2024 +0800
winemac.drv: Show the window after setting layered attributes.
Show the window after setting layered attributes in macdrv_UpdateLayeredWindow().
This corresponds to a22dd45 for winex11.drv. Fix a regression from 8892b79, which
called set_window_pos() before calling USER_Driver->pUpdateLayeredWindow().
Fix Active Trader Pro doesn't show splash screen at startup on macOS.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51984
---
dlls/winemac.drv/window.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c
index 67f45d301df..a04ff5fd4c9 100644
--- a/dlls/winemac.drv/window.c
+++ b/dlls/winemac.drv/window.c
@@ -1930,6 +1930,11 @@ BOOL macdrv_UpdateLayeredWindow(HWND hwnd, const UPDATELAYEREDWINDOWINFO *info,
else set_surface_use_alpha(surface, TRUE);
if (surface) window_surface_add_ref(surface);
+
+ /* Since layered attributes are now set, can now show the window */
+ if (data->cocoa_window && !data->on_screen && NtUserGetWindowLongW(hwnd, GWL_STYLE) & WS_VISIBLE)
+ show_window(data);
+
release_win_data(data);
if (!surface) return FALSE;
Module: vkd3d
Branch: master
Commit: 9c0d04c86204fd360a7528faf2b53acc7301b598
URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/9c0d04c86204fd360a7528faf2b53…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com>
Date: Thu Apr 4 11:49:44 2024 +0200
ci: Build the macOS image each time the Linux image is built.
---
gitlab/image.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/gitlab/image.yml b/gitlab/image.yml
index c93ea0d6..8b235a66 100644
--- a/gitlab/image.yml
+++ b/gitlab/image.yml
@@ -19,6 +19,10 @@ image-linux:
- sed -i "1iFROM $IMAGE_SOURCE" "$DOCKER_FILE"
- /kaniko/executor --context "$CI_PROJECT_DIR" --dockerfile "$DOCKER_FILE" --destination "$IMAGE_LOCAL"
+# Job `image-mac' must be run each time the pipeline is run on a push,
+# otherwise macOS artifacts are not regenerated and macOS jobs cannot find them.
+# So we add a dependency on image.docker too, even if that file is not really
+# used for macOS.
image-mac:
stage: image
rules:
@@ -26,6 +30,7 @@ image-mac:
changes:
- .gitlab-ci.yml
- gitlab/image.yml
+ - gitlab/image.docker
interruptible: true
tags:
- mac
Module: vkd3d
Branch: master
Commit: 6c3b87bed04857c61610b27d1d1a521af004959f
URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/6c3b87bed04857c61610b27d1d1a5…
Author: Henri Verbeet <hverbeet(a)codeweavers.com>
Date: Wed Apr 3 17:59:48 2024 +0200
vkd3d-dxbc: Implement extracting section data.
---
programs/vkd3d-dxbc/main.c | 91 +++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 81 insertions(+), 10 deletions(-)
diff --git a/programs/vkd3d-dxbc/main.c b/programs/vkd3d-dxbc/main.c
index aaccffad..ff463584 100644
--- a/programs/vkd3d-dxbc/main.c
+++ b/programs/vkd3d-dxbc/main.c
@@ -65,6 +65,7 @@ enum
{
OPTION_COLOUR = CHAR_MAX + 1,
OPTION_EMIT,
+ OPTION_EXTRACT,
OPTION_HELP,
OPTION_IGNORE_CHECKSUM,
OPTION_LIST,
@@ -79,6 +80,7 @@ struct action
enum action_type
{
ACTION_TYPE_EMIT,
+ ACTION_TYPE_EXTRACT,
} type;
union
{
@@ -86,6 +88,11 @@ struct action
{
const char *output_filename;
} emit;
+ struct extract
+ {
+ const char *section;
+ const char *output_filename;
+ } extract;
} u;
};
@@ -157,6 +164,7 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
{
{"colour", no_argument, NULL, OPTION_COLOUR},
{"emit", no_argument, NULL, OPTION_EMIT},
+ {"extract", required_argument, NULL, OPTION_EXTRACT},
{"help", no_argument, NULL, OPTION_HELP},
{"ignore-checksum", no_argument, NULL, OPTION_IGNORE_CHECKSUM},
{"list", no_argument, NULL, OPTION_LIST},
@@ -191,7 +199,7 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
for (;;)
{
- if ((option = getopt_long(argc, argv, "ehtVo:", long_options, NULL)) == -1)
+ if ((option = getopt_long(argc, argv, "ex:hto:V", long_options, NULL)) == -1)
break;
switch (option)
@@ -212,6 +220,14 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
action->u.emit.output_filename = options->output_filename;
break;
+ case 'x':
+ case OPTION_EXTRACT:
+ if (!(action = action_push(options, ACTION_TYPE_EXTRACT)))
+ return false;
+ action->u.extract.section = optarg;
+ action->u.extract.output_filename = options->output_filename;
+ break;
+
case 'h':
case OPTION_HELP:
options->print_help = true;
@@ -234,8 +250,8 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
options->colours = no_colours;
break;
- case OPTION_OUTPUT:
case 'o':
+ case OPTION_OUTPUT:
options->output_filename = optarg;
break;
@@ -262,27 +278,30 @@ static void print_usage(const char *program_name)
"Options:\n"
" --colour Enable colour, even when not supported by the output.\n"
" -e, --emit Emit the content of the DXBC blob.\n"
+ " -x, --extract=<section> Extract the data contained in <section>.\n"
+ " <section> must be of the form 'i:<index>'.\n"
" -h, --help Display this information and exit.\n"
+ " --ignore-checksum Do not validate the checksum when parsing the DXBC\n"
+ " blob.\n"
" -t, --list List the contents of the DXBC blob.\n"
" --list-data List the data contained in the DXBC sections.\n"
" --no-colour Disable colour, even when supported by the output.\n"
+ " -o, --output=<file> Set the output filename for --emit or --extract.\n"
" -V, --version Display version information and exit.\n"
- " --ignore-checksum Do not validate the checksum when parsing the DXBC blob.\n"
- " -o, --output=<file> Set the output filename for --emit.\n"
" -- Stop option processing. Any subsequent argument is\n"
" interpreted as a filename.\n"
"\n"
"If the input file is '-' or not specified, input will be read from standard\n"
"input. Similarly, if the output file is '-' or not specified at the point\n"
- "--emit is found, output will be written to the standard output.\n"
+ "--emit or --extract is found, output will be written to the standard output.\n"
"\n"
"Currently this tool can only re-emit the same DXBC blob it loaded. However, it\n"
- "will recompute the checksum while doing so, so --emit can be useful\n"
- "together with --ignore-checksum to fix the checksum for a blob.\n"
+ "will recompute the checksum while doing so, so --emit can be useful together\n"
+ "with --ignore-checksum to fix the checksum for a blob.\n"
"\n"
- "Options --emit and --output can be specified more than once. The DXBC blob\n"
- "will be emitted once for each --emit occurrence, each time using the closest\n"
- "previous --output occurrence as output filename.\n";
+ "Options --emit, --extract, and --output can be specified more than once. The\n"
+ "DXBC blob will be emitted once for each --emit occurrence, each time using the\n"
+ "closest previous --output occurrence as output filename.\n";
fprintf(stderr, "Usage: %s %s", program_name, usage);
}
@@ -539,6 +558,53 @@ static bool emit_dxbc(const struct vkd3d_shader_dxbc_desc *dxbc_desc, const stru
return success;
}
+static struct vkd3d_shader_dxbc_section_desc *get_section(size_t section_count,
+ struct vkd3d_shader_dxbc_section_desc *sections, const char *s)
+{
+ size_t idx;
+ char *end;
+
+ if (!strncmp("i:", s, 2))
+ {
+ s += 2;
+ idx = strtoul(s, &end, 10);
+ if (*end || idx >= section_count)
+ {
+ fprintf(stderr, "Invalid section index '%s' specified.\n", s);
+ return NULL;
+ }
+ return §ions[idx];
+ }
+
+ fprintf(stderr, "Invalid section specifier '%s' specified.\n", s);
+ return NULL;
+}
+
+static bool extract_section(struct vkd3d_shader_dxbc_desc *dxbc_desc, const struct extract *extract)
+{
+ const struct vkd3d_shader_dxbc_section_desc *section;
+ bool close_output, success = true;
+ FILE *output;
+
+ if (!(section = get_section(dxbc_desc->section_count, dxbc_desc->sections, extract->section)))
+ return false;
+
+ if (!(output = open_output(extract->output_filename, &close_output)))
+ return false;
+
+ if (!extract->output_filename && isatty(fileno(output)))
+ fprintf(stderr, "Output is a tty, skipping section '%s'.\n"
+ "If this is really what you intended, specify the output explicitly.\n",
+ extract->section);
+ else if (!(success = write_output(output, §ion->data)))
+ fprintf(stderr, "Failed to write output.\n");
+
+ if (close_output)
+ fclose(output);
+
+ return success;
+}
+
static bool apply_actions(struct vkd3d_shader_dxbc_desc *dxbc_desc,
size_t action_count, const struct action *actions)
{
@@ -552,6 +618,11 @@ static bool apply_actions(struct vkd3d_shader_dxbc_desc *dxbc_desc,
if (!emit_dxbc(dxbc_desc, &action->u.emit))
return false;
break;
+
+ case ACTION_TYPE_EXTRACT:
+ if (!extract_section(dxbc_desc, &action->u.extract))
+ return false;
+ break;
}
}