Permalink
Browse files

initial commit. builds at -j1 with -march=native -O2. should work on …

…others also
  • Loading branch information...
Ryan Voots
Ryan Voots committed May 16, 2012
0 parents commit 6c506c253fd304251d61d3712975f423b5a4bf3c
@@ -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
@@ -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);
@@ -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
+
Oops, something went wrong.

0 comments on commit 6c506c2

Please sign in to comment.