Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
9c2f037b
Commit
9c2f037b
authored
Jun 11, 2022
by
Piotr Caban
Committed by
Alexandre Julliard
Jul 04, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3dx10: Add D3DX10CreateThreadPump stub.
Signed-off-by:
Piotr Caban
<
piotr@codeweavers.com
>
parent
87e55084
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
125 additions
and
1 deletion
+125
-1
async.c
dlls/d3dx10_43/async.c
+123
-0
d3dx10_43.spec
dlls/d3dx10_43/d3dx10_43.spec
+1
-1
d3dx10core.h
include/d3dx10core.h
+1
-0
No files found.
dlls/d3dx10_43/async.c
View file @
9c2f037b
...
...
@@ -609,3 +609,126 @@ HRESULT WINAPI D3DX10PreprocessShaderFromMemory(const char *data, SIZE_T data_si
return
E_NOTIMPL
;
}
struct
thread_pump
{
ID3DX10ThreadPump
ID3DX10ThreadPump_iface
;
LONG
refcount
;
};
static
inline
struct
thread_pump
*
impl_from_ID3DX10ThreadPump
(
ID3DX10ThreadPump
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
thread_pump
,
ID3DX10ThreadPump_iface
);
}
static
HRESULT
WINAPI
thread_pump_QueryInterface
(
ID3DX10ThreadPump
*
iface
,
REFIID
riid
,
void
**
out
)
{
TRACE
(
"iface %p, riid %s, out %p.
\n
"
,
iface
,
debugstr_guid
(
riid
),
out
);
if
(
IsEqualGUID
(
riid
,
&
IID_ID3DX10ThreadPump
)
||
IsEqualGUID
(
riid
,
&
IID_IUnknown
))
{
ID3DX10ThreadPump_AddRef
(
iface
);
*
out
=
iface
;
return
S_OK
;
}
WARN
(
"%s not implemented, returning E_NOINTERFACE.
\n
"
,
debugstr_guid
(
riid
));
*
out
=
NULL
;
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
thread_pump_AddRef
(
ID3DX10ThreadPump
*
iface
)
{
struct
thread_pump
*
thread_pump
=
impl_from_ID3DX10ThreadPump
(
iface
);
ULONG
refcount
=
InterlockedIncrement
(
&
thread_pump
->
refcount
);
TRACE
(
"%p increasing refcount to %lu.
\n
"
,
iface
,
refcount
);
return
refcount
;
}
static
ULONG
WINAPI
thread_pump_Release
(
ID3DX10ThreadPump
*
iface
)
{
struct
thread_pump
*
thread_pump
=
impl_from_ID3DX10ThreadPump
(
iface
);
ULONG
refcount
=
InterlockedDecrement
(
&
thread_pump
->
refcount
);
TRACE
(
"%p decreasing refcount to %lu.
\n
"
,
iface
,
refcount
);
if
(
!
refcount
)
free
(
thread_pump
);
return
refcount
;
}
static
HRESULT
WINAPI
thread_pump_AddWorkItem
(
ID3DX10ThreadPump
*
iface
,
ID3DX10DataLoader
*
loader
,
ID3DX10DataProcessor
*
processor
,
HRESULT
*
result
,
void
**
object
)
{
FIXME
(
"iface %p, loader %p, processor %p, result %p, object %p stub!
\n
"
,
iface
,
loader
,
processor
,
result
,
object
);
return
E_NOTIMPL
;
}
static
UINT
WINAPI
thread_pump_GetWorkItemCount
(
ID3DX10ThreadPump
*
iface
)
{
FIXME
(
"iface %p stub!
\n
"
,
iface
);
return
0
;
}
static
HRESULT
WINAPI
thread_pump_WaitForAllItems
(
ID3DX10ThreadPump
*
iface
)
{
FIXME
(
"iface %p stub!
\n
"
,
iface
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
thread_pump_ProcessDeviceWorkItems
(
ID3DX10ThreadPump
*
iface
,
UINT
count
)
{
FIXME
(
"iface %p, count %u stub!
\n
"
,
iface
,
count
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
thread_pump_PurgeAllItems
(
ID3DX10ThreadPump
*
iface
)
{
FIXME
(
"iface %p stub!
\n
"
,
iface
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
thread_pump_GetQueueStatus
(
ID3DX10ThreadPump
*
iface
,
UINT
*
io_queue
,
UINT
*
process_queue
,
UINT
*
device_queue
)
{
FIXME
(
"iface %p, io_queue %p, process_queue %p, device_queue %p stub!
\n
"
,
iface
,
io_queue
,
process_queue
,
device_queue
);
return
E_NOTIMPL
;
}
static
const
ID3DX10ThreadPumpVtbl
thread_pump_vtbl
=
{
thread_pump_QueryInterface
,
thread_pump_AddRef
,
thread_pump_Release
,
thread_pump_AddWorkItem
,
thread_pump_GetWorkItemCount
,
thread_pump_WaitForAllItems
,
thread_pump_ProcessDeviceWorkItems
,
thread_pump_PurgeAllItems
,
thread_pump_GetQueueStatus
};
HRESULT
WINAPI
D3DX10CreateThreadPump
(
UINT
io_threads
,
UINT
proc_threads
,
ID3DX10ThreadPump
**
pump
)
{
struct
thread_pump
*
object
;
TRACE
(
"io_threads %u, proc_threads %u, pump %p.
\n
"
,
io_threads
,
proc_threads
,
pump
);
if
(
io_threads
>=
1024
||
proc_threads
>=
1024
)
return
E_FAIL
;
if
(
!
(
object
=
calloc
(
1
,
sizeof
(
*
object
))))
return
E_OUTOFMEMORY
;
object
->
ID3DX10ThreadPump_iface
.
lpVtbl
=
&
thread_pump_vtbl
;
object
->
refcount
=
1
;
*
pump
=
&
object
->
ID3DX10ThreadPump_iface
;
return
S_OK
;
}
dlls/d3dx10_43/d3dx10_43.spec
View file @
9c2f037b
@ st
ub
D3DX10CreateThreadPump(long long ptr)
@ st
dcall
D3DX10CreateThreadPump(long long ptr)
@ stdcall D3DX10CheckVersion(long long)
@ stub D3DX10CompileFromFileA(str ptr ptr str str long long ptr ptr ptr ptr)
@ stub D3DX10CompileFromFileW(wstr ptr ptr str str long long ptr ptr ptr ptr)
...
...
include/d3dx10core.h
View file @
9c2f037b
...
...
@@ -298,3 +298,4 @@ HRESULT WINAPI D3DX10CreateFontW(ID3D10Device *device, INT height, UINT width, U
UINT
miplevels
,
BOOL
italic
,
UINT
charset
,
UINT
precision
,
UINT
quality
,
UINT
pitchandfamily
,
const
WCHAR
*
facename
,
ID3DX10Font
**
font
);
HRESULT
WINAPI
D3DX10CreateSprite
(
ID3D10Device
*
device
,
UINT
size
,
ID3DX10Sprite
**
sprite
);
HRESULT
WINAPI
D3DX10CreateThreadPump
(
UINT
io_threads
,
UINT
proc_threads
,
ID3DX10ThreadPump
**
pump
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment