Skip to content

Commit

Permalink
initial commit. builds at -j1 with -march=native -O2. should work on …
Browse files Browse the repository at this point in the history
…others also
  • Loading branch information
Ryan Voots committed May 16, 2012
0 parents commit 6c506c2
Show file tree
Hide file tree
Showing 11 changed files with 1,759 additions and 0 deletions.
11 changes: 11 additions & 0 deletions app-emulation/wine/Manifest
@@ -0,0 +1,11 @@
AUX 39565.patch 984 RMD160 e95dca101ccfabcfb9f244c2a36a8a01b2408588 SHA1 e0599e9ca851ea6a6c16db187eb8dd00580a4460 SHA256 bf1cd3f1fa4875b1a73d57c6c924a5de08edd3aab56142c68655f92646268ae8
AUX 86102.patch 7647 RMD160 45f52ef8072b753fff343042b4aeaaf247fcc967 SHA1 90e61d755f99045f3e0b339a97d87b920d6e6a50 SHA256 a98da354778ddc4f0b8bdcd4e812b16ec351260031024ab117881b3781b60037
AUX 86103.patch 12586 RMD160 47a9cbcd0da243bd8dee0f52ace8bb0ed4f51ce5 SHA1 e1b319f65a61029706a337a48effb37f11dd3edf SHA256 61ac2c9b7be083991e429611362a8688b4c2f7ef0fa9bc6774c48f42c163efb4
AUX 86104.patch 6650 RMD160 ae01266708a3832b77df3419b16902d4f4729681 SHA1 a14b48b99abe5d43fbe6b5a302d831854169c067 SHA256 68281d56ccdea855a332cc79fc9bdc236c9111f198220f3aea24dfe2166dc2cc
AUX 86105.patch 9571 RMD160 7385cb465e1eacc5f5533eef49b4b300fdf66846 SHA1 74a230780b1aa3e0ec1a0700f3e41c439fb30ea6 SHA256 faee56440fa0cf719a6079550baa22c2f29c479a29bb03cc65703ae6c678c6f9
AUX wine-1.1.15-winegcc.patch 1556 RMD160 ca7e0df0a45507e7d31ed81c5712111b83ed9bfa SHA1 4b155fe7cb5e831b7f92757d52aa1ab12569b232 SHA256 dbd89db561d7583faf317d795b8c11231575d885e21c6414add39079604dbd0d
AUX wine-1.2.3-msxml3-libxml2-headers.patch 14328 RMD160 84409dda4e680967048dceaf057c007d5e78d3c9 SHA1 a396cafc13e6b72e5fb101433d54a87cde0ae20d SHA256 0a046e532343f9a4508307434a2f39e0a3a50a66c165b69e56dd671488d4ba7d
AUX wine-1.4_rc2-multilib-portage.patch 1256 RMD160 6445df9cc97ad523f54de256f37810366a0693fd SHA1 8d0d794f74952a53d38c75a8cb586f784a3b9357 SHA256 9d0acd304d11d1bf73f56699754aaa1bfe1facba90648ee330fdbe08d9ff4938
DIST wine-1.5.4.tar.bz2 20187597 RMD160 3fce28e560aa4d5609fdd2febecbde64feb80b79 SHA1 e16e4c0d72b0a2d2395d15e9130de29a024fae17 SHA256 90b10450b1afb4d54dfd20529e040daa4ee901c52b2f3bc452a86c2e06b4b759
DIST wine_gecko-1.5-x86.msi 15950848 RMD160 691e4e96abf2bd17a6d55f8bb784c40e23b0ff9c SHA1 07b2bc74d03c885bb39124a7641715314cd3ae71 SHA256 2e372a1b87ff2a22ad5127400ece4b09e55591d9f84e00bb562d294898a49b5c
EBUILD wine-1.5.4.ebuild 6588 RMD160 6c7eadd34abca411ef968bb5e3054158889aa073 SHA1 4ee3d8a42a7d7dcd5bc2c5f3da9258427267b7ad SHA256 77f4e171d552634b0e0aa77fb89492540be7e535496aef1afed61b2b354545f1
23 changes: 23 additions & 0 deletions app-emulation/wine/files/39565.patch
@@ -0,0 +1,23 @@
--- a/dlls/wined3d/device.c
+++ a/dlls/wined3d/device.c
@@ -5294,6 +5294,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
wined3d_surface_decref(device->onscreen_depth_stencil);
device->onscreen_depth_stencil = NULL;
}
+ wined3d_device_set_depth_stencil(device, NULL);

LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &device->resources, struct wined3d_resource, resource_list_entry)
{
@@ -5393,11 +5394,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
device->onscreen_depth_stencil = NULL;
}

- /* Reset the depth stencil */
+ /* Apply the auto depth stencil if the app requested one */
if (swapchain_desc->enable_auto_depth_stencil)
wined3d_device_set_depth_stencil(device, device->auto_depth_stencil);
- else
- wined3d_device_set_depth_stencil(device, NULL);

TRACE("Resetting stateblock\n");
wined3d_stateblock_decref(device->updateStateBlock);
175 changes: 175 additions & 0 deletions app-emulation/wine/files/86102.patch
@@ -0,0 +1,175 @@
From: "Erich E. Hoover" <ehoover@mymail.mines.edu>
Subject: [PATCH 1/4] server: Add completion information to async IO callback (try 2, resend).
Message-Id: <CAEU2+vo11yvcwH3ESFRutuQqx_5XTKnBb+3QsrZmiY7ORJMxdg@mail.gmail.com>
Date: Wed, 9 May 2012 13:18:05 -0600

Real Name:
Erich Hoover

Description:
The completion handle and key are necessary for an async IO
callback to properly set completion information even when the file
handle is closed (this information is required in order to use
NtSetIoCompletion). The attached patch adds returning this
information to the server so that ntdll has the necessary information
to give to the async callback (part 3).
I'm resending this patch series because the original first patch
in the series was accepted and it has now dropped off the list without
the rest of the series being read. I would really like to see Wine
have release-day support for Diablo III, so I appreciate any and all
feedback on these patches and I will do my very best to immediately
address any concerns or discuss alternative solutions to fixing this
problem (Bug #27657).

Changelog:
server: Add completion information to async IO callback.

From cbd30d54bc9e589612bd7081f959d1fda1d420fc Mon Sep 17 00:00:00 2001
From: Erich Hoover <ehoover@mines.edu>
Date: Wed, 9 May 2012 13:00:09 -0600
Subject: server: Add completion information to async IO callback.

---
server/async.c | 7 +++++--
server/fd.c | 11 +++++++++--
server/file.h | 2 +-
server/protocol.def | 4 +++-
tools/make_requests | 2 +-
5 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/server/async.c b/server/async.c
index dd28dff..38b3b4f 100644
--- a/server/async.c
+++ b/server/async.c
@@ -43,7 +43,8 @@ struct async
unsigned int timeout_status; /* status to report upon timeout */
struct event *event;
struct completion *completion;
- apc_param_t comp_key;
+ apc_param_t comp_key; /* completion key (multi-use) */
+ obj_handle_t comp_handle; /* completion handle to return to APC callbacks */
async_data_t data; /* data for async I/O call */
};

@@ -155,6 +156,8 @@ void async_terminate( struct async *async, unsigned int status )
data.async_io.user = async->data.arg;
data.async_io.sb = async->data.iosb;
data.async_io.status = status;
+ data.async_io.ckey = async->comp_key;
+ data.async_io.chandle= async->comp_handle;
thread_queue_apc( async->thread, &async->obj, &data );
async->status = status;
async_reselect( async );
@@ -214,7 +217,7 @@ struct async *create_async( struct thread *thread, struct async_queue *queue, co
async->timeout = NULL;
async->queue = (struct async_queue *)grab_object( queue );
async->completion = NULL;
- if (queue->fd) async->completion = fd_get_completion( queue->fd, &async->comp_key );
+ if (queue->fd) async->completion = fd_get_completion( queue->fd, &async->comp_key, &async->comp_handle );

list_add_tail( &queue->queue, &async->queue_entry );
grab_object( async );
diff --git a/server/fd.c b/server/fd.c
index a8b3a5f..6666431 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -188,6 +188,7 @@ struct fd
struct async_queue *wait_q; /* other async waiters of this fd */
struct completion *completion; /* completion object attached to this fd */
apc_param_t comp_key; /* completion key to set in completion events */
+ obj_handle_t comp_handle; /* completion handle to give APC callbacks */
};

static void fd_dump( struct object *obj, int verbose );
@@ -1585,6 +1586,8 @@ static struct fd *alloc_fd_object(void)
fd->write_q = NULL;
fd->wait_q = NULL;
fd->completion = NULL;
+ fd->comp_key = 0;
+ fd->comp_handle= 0;
list_init( &fd->inode_entry );
list_init( &fd->locks );

@@ -1620,6 +1623,8 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use
fd->write_q = NULL;
fd->wait_q = NULL;
fd->completion = NULL;
+ fd->comp_key = 0;
+ fd->comp_handle= 0;
fd->no_fd_status = STATUS_BAD_DEVICE_TYPE;
list_init( &fd->inode_entry );
list_init( &fd->locks );
@@ -2193,16 +2198,17 @@ static struct fd *get_handle_fd_obj( struct process *process, obj_handle_t handl
return fd;
}

-struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key )
+struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key, obj_handle_t *p_handle )
{
*p_key = fd->comp_key;
+ *p_handle = fd->comp_handle;
return fd->completion ? (struct completion *)grab_object( fd->completion ) : NULL;
}

void fd_copy_completion( struct fd *src, struct fd *dst )
{
assert( !dst->completion );
- dst->completion = fd_get_completion( src, &dst->comp_key );
+ dst->completion = fd_get_completion( src, &dst->comp_key, &dst->comp_handle );
}

/* flush a file buffers */
@@ -2349,6 +2355,7 @@ DECL_HANDLER(set_completion_info)
if (!(fd->options & (FILE_SYNCHRONOUS_IO_ALERT | FILE_SYNCHRONOUS_IO_NONALERT)) && !fd->completion)
{
fd->completion = get_completion_obj( current->process, req->chandle, IO_COMPLETION_MODIFY_STATE );
+ fd->comp_handle = req->chandle;
fd->comp_key = req->ckey;
}
else set_error( STATUS_INVALID_PARAMETER );
diff --git a/server/file.h b/server/file.h
index ead356d..faf9b15 100644
--- a/server/file.h
+++ b/server/file.h
@@ -164,7 +164,7 @@ extern void async_terminate( struct async *async, unsigned int status );
extern int async_wake_up_by( struct async_queue *queue, struct process *process,
struct thread *thread, client_ptr_t iosb, unsigned int status );
extern void async_wake_up( struct async_queue *queue, unsigned int status );
-extern struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key );
+extern struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key, obj_handle_t *p_handle );
extern void fd_copy_completion( struct fd *src, struct fd *dst );

/* access rights that require Unix read permission */
diff --git a/server/protocol.def b/server/protocol.def
index 31a3b0d..73fc48e 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -442,9 +442,11 @@ typedef union
{
enum apc_type type; /* APC_ASYNC_IO */
unsigned int status; /* I/O status */
- client_ptr_t func; /* unsigned int (*func)(void*, void*, unsigned int, void **); */
+ client_ptr_t func; /* unsigned int (*func)(void*, void*, unsigned int, void **, FILE_COMPLETION_INFORMATION* ); */
client_ptr_t user; /* user pointer */
client_ptr_t sb; /* status block */
+ obj_handle_t chandle; /* completion handle */
+ apc_param_t ckey; /* completion key */
} async_io;
struct
{
diff --git a/tools/make_requests b/tools/make_requests
index 445ad06..163a954 100755
--- a/tools/make_requests
+++ b/tools/make_requests
@@ -45,7 +45,7 @@ my %formats =
"timeout_t" => [ 8, 8, "&dump_timeout" ],
"rectangle_t" => [ 16, 4, "&dump_rectangle" ],
"char_info_t" => [ 4, 2, "&dump_char_info" ],
- "apc_call_t" => [ 40, 8, "&dump_apc_call" ],
+ "apc_call_t" => [ 44, 8, "&dump_apc_call" ],
"apc_result_t" => [ 40, 8, "&dump_apc_result" ],
"async_data_t" => [ 40, 8, "&dump_async_data" ],
"luid_t" => [ 8, 4, "&dump_luid" ],
--
1.7.5.4

0 comments on commit 6c506c2

Please sign in to comment.