Mercurial > mplayer.hg
annotate loader/win32.c @ 34180:61f7925ff295
Clarify that too old binutils is only an issue with x86_64 compilation.
On OSX people sometimes seem to be unaware what they are actually compiling for...
author | reimar |
---|---|
date | Wed, 26 Oct 2011 18:26:51 +0000 |
parents | bf10aa37e4f5 |
children | bac52e3ddd04 |
rev | line source |
---|---|
1 | 1 /*********************************************************** |
2 | |
3465 | 3 Win32 emulation code. Functions that emulate |
4 responses from corresponding Win32 API calls. | |
5 Since we are not going to be able to load | |
6 virtually any DLL, we can only implement this | |
7 much, adding needed functions with each new codec. | |
8 | |
9 Basic principle of implementation: it's not good | |
10 for DLL to know too much about its environment. | |
1 | 11 |
12 ************************************************************/ | |
13 | |
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
14212
diff
changeset
|
14 /* |
18783 | 15 * Modified for use with MPlayer, detailed changelog at |
16 * http://svn.mplayerhq.hu/mplayer/trunk/ | |
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
14212
diff
changeset
|
17 */ |
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
14212
diff
changeset
|
18 |
2069 | 19 #include "config.h" |
21368 | 20 #include "mangle.h" |
1 | 21 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
22 #define REALPLAYER |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
23 //#define LOADLIB_TRY_NATIVE |
30503 | 24 |
25 /* Hack to make sure the correct function declaration in com.h is used when | |
26 * this file is built for the test applications with WIN32_LOADER disabled. */ | |
30647
cd9b192e2e2b
Only #define WIN32_LOADER if it has not been #defined already, fixes warning:
diego
parents:
30612
diff
changeset
|
27 #ifndef WIN32_LOADER |
30500
78a2c26a1002
Fix linking of loader test programs when loader is disabled.
diego
parents:
30489
diff
changeset
|
28 #define WIN32_LOADER |
30647
cd9b192e2e2b
Only #define WIN32_LOADER if it has not been #defined already, fixes warning:
diego
parents:
30612
diff
changeset
|
29 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
30 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
31 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
32 #define PSEUDO_SCREEN_WIDTH /*640*/800 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
33 #define PSEUDO_SCREEN_HEIGHT /*480*/600 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
34 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
35 |
2069 | 36 #include "wine/winbase.h" |
37 #include "wine/winreg.h" | |
38 #include "wine/winnt.h" | |
39 #include "wine/winerror.h" | |
40 #include "wine/debugtools.h" | |
41 #include "wine/module.h" | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
42 #include "wine/winuser.h" |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
43 #include "wine/objbase.h" |
2139 | 44 |
45 #include <stdio.h> | |
1 | 46 #include "win32.h" |
2069 | 47 |
2139 | 48 #include "registry.h" |
49 #include "loader.h" | |
50 #include "com.h" | |
8451 | 51 #include "ext.h" |
32049
6506ce7ba414
Move fs_seg extern variable declaration to ldt_keeper.h, where it belongs.
diego
parents:
31827
diff
changeset
|
52 #include "ldt_keeper.h" |
30901 | 53 #include "path.h" |
2139 | 54 |
2069 | 55 #include <stdlib.h> |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
56 #include <assert.h> |
2139 | 57 #include <stdarg.h> |
2069 | 58 #include <ctype.h> |
1 | 59 #include <pthread.h> |
128 | 60 #include <errno.h> |
1 | 61 #include <time.h> |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
62 #include <math.h> |
128 | 63 #include <unistd.h> |
64 #include <fcntl.h> | |
1 | 65 #include <sys/types.h> |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
66 #include <dirent.h> |
1 | 67 #include <sys/time.h> |
29027 | 68 #include <sys/stat.h> |
2069 | 69 #ifdef HAVE_KSTAT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
70 #include <kstat.h> |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
71 #endif |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
72 #if HAVE_MALLOC_H |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
73 #include <malloc.h> |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
74 #endif |
1 | 75 |
33412
2a2e9b6551d8
configure: Convert HAVE_SYS_MMAN_H into a 0/1 definition.
diego
parents:
32394
diff
changeset
|
76 #if HAVE_SYS_MMAN_H |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
77 #include <sys/mman.h> |
26111
eb82d1524b6d
#include osdep/mman.h if sys/mman.h is not available.
diego
parents:
26105
diff
changeset
|
78 #else |
eb82d1524b6d
#include osdep/mman.h if sys/mman.h is not available.
diego
parents:
26105
diff
changeset
|
79 #include "osdep/mmap.h" |
26105 | 80 #endif |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
81 #include "osdep/mmap_anon.h" |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
82 #include "libavutil/avstring.h" |
31826
f3aed7bffcbb
Reuse do_cpuid from cpudetect.c in loader/win32.c.
reimar
parents:
31824
diff
changeset
|
83 #include "cpudetect.h" |
f3aed7bffcbb
Reuse do_cpuid from cpudetect.c in loader/win32.c.
reimar
parents:
31824
diff
changeset
|
84 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
85 static unsigned int c_localcount_tsc(void) |
1 | 86 { |
87 int a; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
88 __asm__ volatile |
3465 | 89 ( |
90 "rdtsc\n\t" | |
91 :"=a"(a) | |
92 : | |
93 :"edx" | |
94 ); | |
1 | 95 return a; |
96 } | |
128 | 97 static void c_longcount_tsc(long long* z) |
1 | 98 { |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
99 __asm__ volatile |
3465 | 100 ( |
101 "pushl %%ebx\n\t" | |
102 "movl %%eax, %%ebx\n\t" | |
103 "rdtsc\n\t" | |
104 "movl %%eax, 0(%%ebx)\n\t" | |
105 "movl %%edx, 4(%%ebx)\n\t" | |
106 "popl %%ebx\n\t" | |
107 ::"a"(z) | |
14212
540903a59fc0
add missing registers in clobber list, fixes bug #169
reimar
parents:
13751
diff
changeset
|
108 :"edx" |
3465 | 109 ); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
110 } |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
111 static unsigned int c_localcount_notsc(void) |
1 | 112 { |
113 struct timeval tv; | |
114 unsigned limit=~0; | |
115 limit/=1000000; | |
116 gettimeofday(&tv, 0); | |
117 return limit*tv.tv_usec; | |
118 } | |
128 | 119 static void c_longcount_notsc(long long* z) |
1 | 120 { |
121 struct timeval tv; | |
122 unsigned long long result; | |
123 unsigned limit=~0; | |
124 if(!z)return; | |
125 limit/=1000000; | |
126 gettimeofday(&tv, 0); | |
127 result=tv.tv_sec; | |
128 result<<=32; | |
129 result+=limit*tv.tv_usec; | |
130 *z=result; | |
131 } | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
132 static unsigned int localcount_stub(void); |
2069 | 133 static void longcount_stub(long long*); |
31821 | 134 static unsigned int (*localcount)(void)=localcount_stub; |
128 | 135 static void (*longcount)(long long*)=longcount_stub; |
1 | 136 |
30886
05057aa86c03
Fix thread safety issue in mreq_private: last_alloc was accessed from multiple
sesse
parents:
30885
diff
changeset
|
137 static pthread_mutex_t memmut = PTHREAD_MUTEX_INITIALIZER; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
138 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
139 static unsigned int localcount_stub(void) |
128 | 140 { |
141 unsigned int regs[4]; | |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
142 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
143 if ((regs[3] & 0x00000010) != 0) |
128 | 144 { |
145 localcount=c_localcount_tsc; | |
146 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
147 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
148 else |
128 | 149 { |
3465 | 150 localcount=c_localcount_notsc; |
128 | 151 longcount=c_longcount_notsc; |
152 } | |
153 return localcount(); | |
154 } | |
155 static void longcount_stub(long long* z) | |
1 | 156 { |
128 | 157 unsigned int regs[4]; |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
158 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
159 if ((regs[3] & 0x00000010) != 0) |
128 | 160 { |
161 localcount=c_localcount_tsc; | |
162 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
163 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
164 else |
128 | 165 { |
3465 | 166 localcount=c_localcount_notsc; |
128 | 167 longcount=c_longcount_notsc; |
168 } | |
169 longcount(z); | |
170 } | |
2780 | 171 |
17020 | 172 #include "mp_msg.h" |
2069 | 173 int LOADER_DEBUG=1; // active only if compiled with -DDETAILED_OUT |
3128 | 174 //#define DETAILED_OUT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
175 static inline void dbgprintf(char* fmt, ...) |
128 | 176 { |
235 | 177 #ifdef DETAILED_OUT |
128 | 178 if(LOADER_DEBUG) |
179 { | |
180 FILE* f; | |
181 va_list va; | |
3465 | 182 va_start(va, fmt); |
128 | 183 f=fopen("./log", "a"); |
3134 | 184 vprintf(fmt, va); |
3465 | 185 fflush(stdout); |
186 if(f) | |
128 | 187 { |
188 vfprintf(f, fmt, va); | |
189 fsync(fileno(f)); | |
3465 | 190 fclose(f); |
128 | 191 } |
192 va_end(va); | |
193 } | |
235 | 194 #endif |
17932 | 195 if ( mp_msg_test(MSGT_WIN32,MSGL_DBG3) ) |
5740 | 196 { |
197 va_list va; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
198 |
5740 | 199 va_start(va, fmt); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
200 vprintf(fmt, va); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
201 // mp_dbg(MSGT_WIN32, MSGL_DBG3, fmt, va); |
5740 | 202 va_end(va); |
30220
057c8193f4d3
Avoid excessive fflush in dbgprintf if we didn't even print anything.
reimar
parents:
29725
diff
changeset
|
203 fflush(stdout); |
5740 | 204 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
205 } |
3128 | 206 |
207 | |
3465 | 208 char export_names[300][32]={ |
209 "name1", | |
210 //"name2", | |
211 //"name3" | |
1 | 212 }; |
213 //#define min(x,y) ((x)<(y)?(x):(y)) | |
214 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
215 void destroy_event(void* event); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
216 |
3134 | 217 struct th_list_t; |
218 typedef struct th_list_t{ | |
219 int id; | |
220 void* thread; | |
221 struct th_list_t* next; | |
222 struct th_list_t* prev; | |
223 } th_list; | |
224 | |
225 | |
226 // have to be cleared by GARBAGE COLLECTOR | |
25806
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
227 //static unsigned char* heap=NULL; |
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
228 //static int heap_counter=0; |
3134 | 229 static tls_t* g_tls=NULL; |
230 static th_list* list=NULL; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
231 static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; |
3134 | 232 |
25806
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
233 #if 0 |
2069 | 234 static void test_heap(void) |
1 | 235 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
236 int offset=0; |
1 | 237 if(heap==0) |
238 return; | |
239 while(offset<heap_counter) | |
240 { | |
241 if(*(int*)(heap+offset)!=0x433476) | |
242 { | |
243 printf("Heap corruption at address %d\n", offset); | |
244 return; | |
245 } | |
246 offset+=8+*(int*)(heap+offset+4); | |
247 } | |
248 for(;offset<min(offset+1000, 20000000); offset++) | |
249 if(heap[offset]!=0xCC) | |
3465 | 250 { |
251 printf("Free heap corruption at address %d\n", offset); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
252 } |
1 | 253 } |
25806
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
254 #endif |
1 | 255 #undef MEMORY_DEBUG |
256 | |
257 #ifdef MEMORY_DEBUG | |
258 | |
7386 | 259 static void* my_mreq(int size, int to_zero) |
1 | 260 { |
261 static int test=0; | |
262 test++; | |
263 if(test%10==0)printf("Memory: %d bytes allocated\n", heap_counter); | |
3465 | 264 // test_heap(); |
1 | 265 if(heap==NULL) |
266 { | |
267 heap=malloc(20000000); | |
268 memset(heap, 0xCC,20000000); | |
269 } | |
270 if(heap==0) | |
271 { | |
272 printf("No enough memory\n"); | |
273 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
274 } |
1 | 275 if(heap_counter+size>20000000) |
276 { | |
277 printf("No enough memory\n"); | |
278 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
279 } |
1 | 280 *(int*)(heap+heap_counter)=0x433476; |
281 heap_counter+=4; | |
282 *(int*)(heap+heap_counter)=size; | |
283 heap_counter+=4; | |
284 printf("Allocated %d bytes of memory: sys %d, user %d-%d\n", size, heap_counter-8, heap_counter, heap_counter+size); | |
285 if(to_zero) | |
3465 | 286 memset(heap+heap_counter, 0, size); |
1543 | 287 else |
2139 | 288 memset(heap+heap_counter, 0xcc, size); // make crash reproducable |
1 | 289 heap_counter+=size; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
290 return heap+heap_counter-size; |
1 | 291 } |
7386 | 292 static int my_release(char* memory) |
1 | 293 { |
3465 | 294 // test_heap(); |
1 | 295 if(memory==NULL) |
296 { | |
297 printf("ERROR: free(0)\n"); | |
298 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
299 } |
1 | 300 if(*(int*)(memory-8)!=0x433476) |
301 { | |
302 printf("MEMORY CORRUPTION !!!!!!!!!!!!!!!!!!!\n"); | |
303 return 0; | |
304 } | |
305 printf("Freed %d bytes of memory\n", *(int*)(memory-4)); | |
3465 | 306 // memset(memory-8, *(int*)(memory-4), 0xCC); |
1 | 307 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
308 } |
1 | 309 |
310 #else | |
128 | 311 #define GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
312 typedef struct alloc_header_t alloc_header; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
313 struct alloc_header_t |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
314 { |
3465 | 315 // let's keep allocated data 16 byte aligned |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
316 alloc_header* prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
317 alloc_header* next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
318 long deadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
319 long size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
320 long type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
321 long reserved1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
322 long reserved2; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
323 long reserved3; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
324 }; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
325 |
128 | 326 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
327 static alloc_header* last_alloc = NULL; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
328 static int alccnt = 0; |
128 | 329 #endif |
330 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
331 #define AREATYPE_CLIENT 0 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
332 #define AREATYPE_EVENT 1 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
333 #define AREATYPE_MUTEX 2 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
334 #define AREATYPE_COND 3 |
3134 | 335 #define AREATYPE_CRITSECT 4 |
336 | |
337 /* -- critical sections -- */ | |
338 struct CRITSECT | |
339 { | |
340 pthread_t id; | |
341 pthread_mutex_t mutex; | |
30795 | 342 pthread_cond_t unlocked; |
343 int lock_count; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
344 long deadbeef; |
3134 | 345 }; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
346 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
347 void* mreq_private(int size, int to_zero, int type); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
348 void* mreq_private(int size, int to_zero, int type) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
349 { |
3465 | 350 int nsize = size + sizeof(alloc_header); |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
351 alloc_header* header = memalign(16, nsize); |
3465 | 352 if (!header) |
353 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
354 if (to_zero) |
3465 | 355 memset(header, 0, nsize); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
356 #ifdef GARBAGE |
30886
05057aa86c03
Fix thread safety issue in mreq_private: last_alloc was accessed from multiple
sesse
parents:
30885
diff
changeset
|
357 pthread_mutex_lock(&memmut); |
05057aa86c03
Fix thread safety issue in mreq_private: last_alloc was accessed from multiple
sesse
parents:
30885
diff
changeset
|
358 if (last_alloc) |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
359 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
360 last_alloc->next = header; /* set next */ |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
361 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
362 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
363 header->prev = last_alloc; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
364 header->next = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
365 last_alloc = header; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
366 alccnt++; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
367 pthread_mutex_unlock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
368 #endif |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
369 header->deadbeef = 0xdeadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
370 header->size = size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
371 header->type = type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
372 |
3128 | 373 //if (alccnt < 40000) printf("MY_REQ: %p\t%d t:%d (cnt:%d)\n", header, size, type, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
374 return header + 1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
375 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
376 |
7386 | 377 static int my_release(void* memory) |
1 | 378 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
379 alloc_header* header = (alloc_header*) memory - 1; |
128 | 380 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
381 alloc_header* prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
382 alloc_header* nextmem; |
3134 | 383 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
384 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
385 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
386 |
7386 | 387 if (header->deadbeef != (long) 0xdeadbeef) |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
388 { |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
389 dbgprintf("FATAL releasing corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
390 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
391 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
392 |
3128 | 393 pthread_mutex_lock(&memmut); |
394 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
395 switch(header->type) |
128 | 396 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
397 case AREATYPE_EVENT: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
398 destroy_event(memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
399 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
400 case AREATYPE_COND: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
401 pthread_cond_destroy((pthread_cond_t*)memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
402 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
403 case AREATYPE_MUTEX: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
404 pthread_mutex_destroy((pthread_mutex_t*)memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
405 break; |
3134 | 406 case AREATYPE_CRITSECT: |
407 pthread_mutex_destroy(&((struct CRITSECT*)memory)->mutex); | |
408 break; | |
409 default: | |
410 //memset(memory, 0xcc, header->size); | |
4384 | 411 ; |
128 | 412 } |
3128 | 413 |
3465 | 414 header->deadbeef = 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
415 prevmem = header->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
416 nextmem = header->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
417 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
418 if (prevmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
419 prevmem->next = nextmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
420 if (nextmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
421 nextmem->prev = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
422 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
423 if (header == last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
424 last_alloc = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
425 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
426 alccnt--; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
427 |
30915
8b78430a1249
Don't try to delete the global memory mutex in the Win32 loader code,
sesse
parents:
30907
diff
changeset
|
428 pthread_mutex_unlock(&memmut); |
3465 | 429 |
3128 | 430 //if (alccnt < 40000) printf("MY_RELEASE: %p\t%ld (%d)\n", header, header->size, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
431 #else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
432 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
433 return 0; |
128 | 434 #endif |
3465 | 435 //memset(header + 1, 0xcc, header->size); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
436 free(header); |
1 | 437 return 0; |
438 } | |
439 #endif | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
440 |
7386 | 441 static inline void* my_mreq(int size, int to_zero) |
3465 | 442 { |
443 return mreq_private(size, to_zero, AREATYPE_CLIENT); | |
444 } | |
445 | |
7386 | 446 static int my_size(void* memory) |
5234 | 447 { |
448 if(!memory) return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
449 return ((alloc_header*)memory)[-1].size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
450 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
451 |
3465 | 452 static void* my_realloc(void* memory, int size) |
1 | 453 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
454 void *ans = memory; |
5234 | 455 int osize; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
456 if (memory == NULL) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
457 return my_mreq(size, 0); |
5234 | 458 osize = my_size(memory); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
459 if (osize < size) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
460 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
461 ans = my_mreq(size, 0); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
462 memcpy(ans, memory, osize); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
463 my_release(memory); |
2069 | 464 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
465 return ans; |
2069 | 466 } |
1 | 467 |
3465 | 468 /* |
469 * | |
470 * WINE API - native implementation for several win32 libraries | |
471 * | |
472 */ | |
473 | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
474 static int WINAPI ext_unknown(void) |
1 | 475 { |
476 printf("Unknown func called\n"); | |
477 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
478 } |
3465 | 479 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
480 static int WINAPI expGetVolumeInformationA( const char *root, char *label, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
481 unsigned int label_len, unsigned int *serial, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
482 unsigned int *filename_len,unsigned int *flags, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
483 char *fsname, unsigned int fsname_len ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
484 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
485 dbgprintf("GetVolumeInformationA( %s, 0x%x, %ld, 0x%x, 0x%x, 0x%x, 0x%x, %ld) => 1\n", |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
486 root,label,label_len,serial,filename_len,flags,fsname,fsname_len); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
487 //hack Do not return any real data - do nothing |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
488 return 1; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
489 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
490 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
491 static unsigned int WINAPI expGetDriveTypeA( const char *root ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
492 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
493 dbgprintf("GetDriveTypeA( %s ) => %d\n",root,DRIVE_FIXED); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
494 // hack return as Fixed Drive Type |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
495 return DRIVE_FIXED; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
496 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
497 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
498 static unsigned int WINAPI expGetLogicalDriveStringsA( unsigned int len, char *buffer ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
499 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
500 dbgprintf("GetLogicalDriveStringsA(%d, 0x%x) => 4\n",len,buffer); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
501 // hack only have one drive c:\ in this hack |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
502 *buffer++='c'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
503 *buffer++=':'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
504 *buffer++='\\'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
505 *buffer++='\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
506 *buffer= '\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
507 return 4; // 1 drive * 4 bytes (includes null) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
508 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
509 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
510 |
3465 | 511 static int WINAPI expIsBadWritePtr(void* ptr, unsigned int count) |
1 | 512 { |
3465 | 513 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 514 dbgprintf("IsBadWritePtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
515 return result; | |
1 | 516 } |
3465 | 517 static int WINAPI expIsBadReadPtr(void* ptr, unsigned int count) |
1 | 518 { |
3465 | 519 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 520 dbgprintf("IsBadReadPtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
521 return result; | |
1 | 522 } |
3465 | 523 static int WINAPI expDisableThreadLibraryCalls(int module) |
1 | 524 { |
128 | 525 dbgprintf("DisableThreadLibraryCalls(0x%x) => 0\n", module); |
1 | 526 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
527 } |
3465 | 528 |
529 static HMODULE WINAPI expGetDriverModuleHandle(DRVR* pdrv) | |
1 | 530 { |
2069 | 531 HMODULE result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
532 if (pdrv==NULL) |
2069 | 533 result=0; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
534 else |
3465 | 535 result=pdrv->hDriverModule; |
2069 | 536 dbgprintf("GetDriverModuleHandle(%p) => %p\n", pdrv, result); |
128 | 537 return result; |
1 | 538 } |
539 | |
2069 | 540 #define MODULE_HANDLE_kernel32 ((HMODULE)0x120) |
5234 | 541 #define MODULE_HANDLE_user32 ((HMODULE)0x121) |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
542 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
543 #define MODULE_HANDLE_wininet ((HMODULE)0x122) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
544 #define MODULE_HANDLE_ddraw ((HMODULE)0x123) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
545 #define MODULE_HANDLE_advapi32 ((HMODULE)0x124) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
546 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
547 #define MODULE_HANDLE_comdlg32 ((HMODULE)0x125) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
548 #define MODULE_HANDLE_msvcrt ((HMODULE)0x126) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
549 #define MODULE_HANDLE_ole32 ((HMODULE)0x127) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
550 #define MODULE_HANDLE_winmm ((HMODULE)0x128) |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
551 #define MODULE_HANDLE_psapi ((HMODULE)0x129) |
2069 | 552 |
30806 | 553 // Fake PE header, since some software (and the Microsoft CRT v8 and newer) |
554 // assume GetModuleHandle(NULL) returns a pointer to a PE header. | |
555 // We simulate a very simple header with only one section. | |
556 // | |
557 // NOTE: If you have a section called .mixcrt, the Microsoft CRT will assume | |
558 // it's running in a POSIX binary, and stop using EncodePointer/DecodePointer. | |
559 static const struct { | |
560 IMAGE_DOS_HEADER doshdr; | |
561 IMAGE_NT_HEADERS nthdr; | |
562 IMAGE_SECTION_HEADER opthdr; | |
563 } __attribute__((__packed__)) mp_exe = { | |
564 .doshdr.e_lfanew = sizeof(IMAGE_DOS_HEADER), | |
565 .nthdr.FileHeader.NumberOfSections = 1, | |
566 .nthdr.FileHeader.SizeOfOptionalHeader = | |
567 sizeof(IMAGE_NT_HEADERS) - FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader), /* 0xe0 */ | |
568 .opthdr.Name = ".text" | |
569 }; | |
570 | |
3465 | 571 static HMODULE WINAPI expGetModuleHandleA(const char* name) |
1 | 572 { |
3465 | 573 WINE_MODREF* wm; |
574 HMODULE result; | |
575 if(!name) | |
30806 | 576 result=(HMODULE)&mp_exe.doshdr; |
3465 | 577 else |
578 { | |
579 wm=MODULE_FindModule(name); | |
580 if(wm==0)result=0; | |
128 | 581 else |
3465 | 582 result=(HMODULE)(wm->module); |
583 } | |
584 if(!result) | |
585 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
586 if(name && (strcasecmp(name, "kernel32")==0 || !strcasecmp(name, "kernel32.dll"))) |
3465 | 587 result=MODULE_HANDLE_kernel32; |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
588 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
589 if(name && strcasecmp(name, "user32")==0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
590 result=MODULE_HANDLE_user32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
591 #endif |
3465 | 592 } |
593 dbgprintf("GetModuleHandleA('%s') => 0x%x\n", name, result); | |
594 return result; | |
1 | 595 } |
128 | 596 |
30597 | 597 static HMODULE WINAPI expGetModuleHandleW(const uint16_t* name) |
598 { | |
599 char aname[256]; | |
600 int pos = 0; | |
601 while (*name) { | |
602 if (*name > 256 || pos >= sizeof(aname) - 1) | |
603 return NULL; | |
604 aname[pos++] = *name++; | |
605 } | |
606 aname[pos] = 0; | |
607 return expGetModuleHandleA(aname); | |
608 } | |
609 | |
3465 | 610 static void* WINAPI expCreateThread(void* pSecAttr, long dwStackSize, |
611 void* lpStartAddress, void* lpParameter, | |
612 long dwFlags, long* dwThreadId) | |
1 | 613 { |
614 pthread_t *pth; | |
3465 | 615 // printf("CreateThread:"); |
7386 | 616 pth = (pthread_t*) my_mreq(sizeof(pthread_t), 0); |
1 | 617 pthread_create(pth, NULL, (void*(*)(void*))lpStartAddress, lpParameter); |
618 if(dwFlags) | |
128 | 619 printf( "WARNING: CreateThread flags not supported\n"); |
1 | 620 if(dwThreadId) |
621 *dwThreadId=(long)pth; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
622 pthread_mutex_lock(&list_lock); |
1 | 623 if(list==NULL) |
624 { | |
625 list=my_mreq(sizeof(th_list), 1); | |
626 list->next=list->prev=NULL; | |
627 } | |
628 else | |
629 { | |
630 list->next=my_mreq(sizeof(th_list), 0); | |
631 list->next->prev=list; | |
632 list->next->next=NULL; | |
633 list=list->next; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
634 } |
1 | 635 list->thread=pth; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
636 pthread_mutex_unlock(&list_lock); |
128 | 637 dbgprintf("CreateThread(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0x%x\n", |
3465 | 638 pSecAttr, dwStackSize, lpStartAddress, lpParameter, dwFlags, dwThreadId, pth); |
1 | 639 return pth; |
640 } | |
641 | |
30819 | 642 static DWORD WINAPI expResumeThread(HANDLE hThread) |
643 { | |
644 int ret = 1; | |
645 dbgprintf("ResumeThread(0x%x) => 0x%x\n", hThread, ret); | |
646 return ret; | |
647 } | |
648 | |
1 | 649 struct mutex_list_t; |
650 | |
651 struct mutex_list_t | |
652 { | |
128 | 653 char type; |
1 | 654 pthread_mutex_t *pm; |
128 | 655 pthread_cond_t *pc; |
656 char state; | |
657 char reset; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
658 char name[128]; |
128 | 659 int semaphore; |
30811 | 660 int lock_count; |
661 pthread_t owner; | |
1 | 662 struct mutex_list_t* next; |
663 struct mutex_list_t* prev; | |
664 }; | |
665 typedef struct mutex_list_t mutex_list; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
666 static mutex_list* mlist=NULL; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
667 static pthread_mutex_t mlist_lock = PTHREAD_MUTEX_INITIALIZER; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
668 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
669 void destroy_event(void* event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
670 { |
31820 | 671 mutex_list *pp; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
672 pthread_mutex_lock(&mlist_lock); |
31820 | 673 pp=mlist; |
3465 | 674 // printf("garbage collector: destroy_event(%x)\n", event); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
675 while(pp) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
676 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
677 if(pp==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
678 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
679 if(pp->next) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
680 pp->next->prev=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
681 if(pp->prev) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
682 pp->prev->next=pp->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
683 if(mlist==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
684 mlist=mlist->prev; |
3465 | 685 /* |
686 pp=mlist; | |
687 while(pp) | |
688 { | |
689 printf("%x => ", pp); | |
690 pp=pp->prev; | |
691 } | |
692 printf("0\n"); | |
693 */ | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
694 pthread_mutex_unlock(&mlist_lock); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
695 return; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
696 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
697 pp=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
698 } |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
699 pthread_mutex_unlock(&mlist_lock); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
700 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
701 |
3465 | 702 static void* WINAPI expCreateEventA(void* pSecAttr, char bManualReset, |
703 char bInitialState, const char* name) | |
1 | 704 { |
705 pthread_mutex_t *pm; | |
128 | 706 pthread_cond_t *pc; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
707 void *ret; |
3465 | 708 /* |
709 mutex_list* pp; | |
710 pp=mlist; | |
711 while(pp) | |
712 { | |
713 printf("%x => ", pp); | |
714 pp=pp->prev; | |
715 } | |
716 printf("0\n"); | |
717 */ | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
718 pthread_mutex_lock(&mlist_lock); |
1 | 719 if(mlist!=NULL) |
720 { | |
721 mutex_list* pp=mlist; | |
722 if(name!=NULL) | |
3465 | 723 do |
1 | 724 { |
128 | 725 if((strcmp(pp->name, name)==0) && (pp->type==0)) |
726 { | |
727 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", | |
3465 | 728 pSecAttr, bManualReset, bInitialState, name, name, pp->pm); |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
729 pthread_mutex_unlock(&mlist_lock); |
1 | 730 return pp->pm; |
128 | 731 } |
2069 | 732 }while((pp=pp->prev) != NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
733 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
734 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
1 | 735 pthread_mutex_init(pm, NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
736 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 737 pthread_cond_init(pc, NULL); |
1 | 738 if(mlist==NULL) |
739 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
740 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
1 | 741 mlist->next=mlist->prev=NULL; |
742 } | |
743 else | |
744 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
745 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 746 mlist->next->prev=mlist; |
1 | 747 mlist->next->next=NULL; |
748 mlist=mlist->next; | |
749 } | |
128 | 750 mlist->type=0; /* Type Event */ |
1 | 751 mlist->pm=pm; |
128 | 752 mlist->pc=pc; |
753 mlist->state=bInitialState; | |
30789 | 754 mlist->reset=!bManualReset; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
755 if(name) |
3465 | 756 strncpy(mlist->name, name, 127); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
757 else |
1 | 758 mlist->name[0]=0; |
759 if(pm==NULL) | |
760 dbgprintf("ERROR::: CreateEventA failure\n"); | |
3465 | 761 /* |
762 if(bInitialState) | |
763 pthread_mutex_lock(pm); | |
764 */ | |
128 | 765 if(name) |
3465 | 766 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", |
767 pSecAttr, bManualReset, bInitialState, name, name, mlist); | |
128 | 768 else |
3465 | 769 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, NULL) => 0x%x\n", |
770 pSecAttr, bManualReset, bInitialState, mlist); | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
771 ret = mlist; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
772 pthread_mutex_unlock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
773 return ret; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
774 } |
1 | 775 |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
776 static void* WINAPI expCreateEventW(void* pSecAttr, char bManualReset, |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
777 char bInitialState, const WCHAR* name) |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
778 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
779 char ascii_name[256]; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
780 char *aname = NULL; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
781 if (name) { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
782 WideCharToMultiByte(65001, 0x0, name, -1, ascii_name, 256, NULL, NULL); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
783 aname = ascii_name; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
784 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
785 return expCreateEventA(pSecAttr, bManualReset, bInitialState, aname); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
786 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
787 |
3465 | 788 static void* WINAPI expSetEvent(void* event) |
1 | 789 { |
128 | 790 mutex_list *ml = (mutex_list *)event; |
791 dbgprintf("SetEvent(%x) => 0x1\n", event); | |
792 pthread_mutex_lock(ml->pm); | |
793 if (ml->state == 0) { | |
794 ml->state = 1; | |
795 pthread_cond_signal(ml->pc); | |
796 } | |
797 pthread_mutex_unlock(ml->pm); | |
798 | |
799 return (void *)1; | |
1 | 800 } |
3465 | 801 static void* WINAPI expResetEvent(void* event) |
1 | 802 { |
128 | 803 mutex_list *ml = (mutex_list *)event; |
804 dbgprintf("ResetEvent(0x%x) => 0x1\n", event); | |
805 pthread_mutex_lock(ml->pm); | |
806 ml->state = 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
807 pthread_mutex_unlock(ml->pm); |
128 | 808 |
809 return (void *)1; | |
1 | 810 } |
811 | |
3465 | 812 static void* WINAPI expWaitForSingleObject(void* object, int duration) |
1 | 813 { |
128 | 814 mutex_list *ml = (mutex_list *)object; |
2069 | 815 // FIXME FIXME FIXME - this value is sometime unititialize !!! |
816 int ret = WAIT_FAILED; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
817 mutex_list* pp; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
818 th_list* tp; |
2779 | 819 if(object == (void*)0xcfcf9898) |
820 { | |
3465 | 821 /** |
822 From GetCurrentThread() documentation: | |
823 A pseudo handle is a special constant that is interpreted as the current thread handle. The calling thread can use this handle to specify itself whenever a thread handle is required. Pseudo handles are not inherited by child processes. | |
824 | |
825 This handle has the maximum possible access to the thread object. For systems that support security descriptors, this is the maximum access allowed by the security descriptor for the calling process. For systems that do not support security descriptors, this is THREAD_ALL_ACCESS. | |
826 | |
827 The function cannot be used by one thread to create a handle that can be used by other threads to refer to the first thread. The handle is always interpreted as referring to the thread that is using it. A thread can create a "real" handle to itself that can be used by other threads, or inherited by other processes, by specifying the pseudo handle as the source handle in a call to the DuplicateHandle function. | |
828 **/ | |
2779 | 829 dbgprintf("WaitForSingleObject(thread_handle) called\n"); |
3128 | 830 return (void*)WAIT_FAILED; |
2779 | 831 } |
2069 | 832 dbgprintf("WaitForSingleObject(0x%x, duration %d) =>\n",object, duration); |
833 | |
30801 | 834 // See if this is a thread. |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
835 pthread_mutex_lock(&list_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
836 tp=list; |
30801 | 837 while (tp && (tp->thread != object)) |
838 tp = tp->prev; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
839 pthread_mutex_unlock(&list_lock); |
30801 | 840 if (tp) { |
841 if (pthread_join(*(pthread_t*)object, NULL) == 0) { | |
842 return (void*)WAIT_OBJECT_0; | |
843 } else { | |
844 return (void*)WAIT_FAILED; | |
845 } | |
846 } | |
847 | |
718 | 848 // loop below was slightly fixed - its used just for checking if |
849 // this object really exists in our list | |
850 if (!ml) | |
3465 | 851 return (void*) ret; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
852 pthread_mutex_lock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
853 pp=mlist; |
718 | 854 while (pp && (pp->pm != ml->pm)) |
2069 | 855 pp = pp->prev; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
856 pthread_mutex_unlock(&mlist_lock); |
718 | 857 if (!pp) { |
2069 | 858 dbgprintf("WaitForSingleObject: NotFound\n"); |
859 return (void*)ret; | |
718 | 860 } |
128 | 861 |
862 pthread_mutex_lock(ml->pm); | |
863 | |
864 switch(ml->type) { | |
3465 | 865 case 0: /* Event */ |
128 | 866 if (duration == 0) { /* Check Only */ |
30788
ea3ba0e77acf
Fix return values of WaitForSingleObject when checking an event.
sesse
parents:
30702
diff
changeset
|
867 if (ml->state == 1) ret = WAIT_OBJECT_0; |
ea3ba0e77acf
Fix return values of WaitForSingleObject when checking an event.
sesse
parents:
30702
diff
changeset
|
868 else ret = WAIT_FAILED; |
128 | 869 } |
870 if (duration == -1) { /* INFINITE */ | |
3465 | 871 if (ml->state == 0) |
872 pthread_cond_wait(ml->pc,ml->pm); | |
873 if (ml->reset) | |
874 ml->state = 0; | |
875 ret = WAIT_OBJECT_0; | |
128 | 876 } |
877 if (duration > 0) { /* Timed Wait */ | |
3465 | 878 struct timespec abstime; |
879 struct timeval now; | |
880 gettimeofday(&now, 0); | |
881 abstime.tv_sec = now.tv_sec + (now.tv_usec+duration)/1000000; | |
882 abstime.tv_nsec = ((now.tv_usec+duration)%1000000)*1000; | |
883 if (ml->state == 0) | |
884 ret=pthread_cond_timedwait(ml->pc,ml->pm,&abstime); | |
885 if (ret == ETIMEDOUT) ret = WAIT_TIMEOUT; | |
886 else ret = WAIT_OBJECT_0; | |
887 if (ml->reset) | |
888 ml->state = 0; | |
128 | 889 } |
3465 | 890 break; |
891 case 1: /* Semaphore */ | |
892 if (duration == 0) { | |
893 if(ml->semaphore==0) ret = WAIT_FAILED; | |
894 else { | |
30810 | 895 ml->semaphore--; |
3465 | 896 ret = WAIT_OBJECT_0; |
897 } | |
898 } | |
128 | 899 if (duration == -1) { |
3465 | 900 if (ml->semaphore==0) |
901 pthread_cond_wait(ml->pc,ml->pm); | |
902 ml->semaphore--; | |
30810 | 903 ret = WAIT_OBJECT_0; |
128 | 904 } |
3465 | 905 break; |
30811 | 906 case 2: /* Mutex */ |
907 if (duration == 0) { | |
908 if(ml->lock_count > 0 && ml->owner != pthread_self()) ret = WAIT_FAILED; | |
909 else { | |
910 ml->lock_count++; | |
911 ml->owner = pthread_self(); | |
912 ret = WAIT_OBJECT_0; | |
913 } | |
914 } | |
915 if (duration == -1) { | |
916 if (ml->lock_count > 0 && ml->owner != pthread_self()) { | |
917 pthread_cond_wait(ml->pc,ml->pm); | |
918 } | |
919 ml->lock_count++; | |
920 ml->owner = pthread_self(); | |
921 ret = WAIT_OBJECT_0; | |
922 } | |
923 break; | |
128 | 924 } |
925 pthread_mutex_unlock(ml->pm); | |
926 | |
927 dbgprintf("WaitForSingleObject(0x%x, %d): 0x%x => 0x%x \n",object,duration,ml,ret); | |
928 return (void *)ret; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
929 } |
1 | 930 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
931 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
932 static void* WINAPI expWaitForMultipleObjects(int count, const void** objects, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
933 int WaitAll, int duration) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
934 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
935 int i; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
936 void *object; |
8451 | 937 void *ret; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
938 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
939 dbgprintf("WaitForMultipleObjects(%d, 0x%x, %d, duration %d) =>\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
940 count, objects, WaitAll, duration); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
941 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
942 for (i = 0; i < count; i++) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
943 { |
13182 | 944 object = (void *)objects[i]; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
945 ret = expWaitForSingleObject(object, duration); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
946 if (WaitAll) |
8285 | 947 dbgprintf("WaitAll flag not yet supported...\n"); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
948 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
949 return ret; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
950 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
951 return NULL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
952 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
953 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
954 static void WINAPI expExitThread(int retcode) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
955 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
956 dbgprintf("ExitThread(%d)\n", retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
957 pthread_exit(&retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
958 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
959 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
960 |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
961 static int pf_set = 0; |
1 | 962 static BYTE PF[64] = {0,}; |
963 | |
128 | 964 static void DumpSystemInfo(const SYSTEM_INFO* si) |
965 { | |
966 dbgprintf(" Processor architecture %d\n", si->u.s.wProcessorArchitecture); | |
967 dbgprintf(" Page size: %d\n", si->dwPageSize); | |
968 dbgprintf(" Minimum app address: %d\n", si->lpMinimumApplicationAddress); | |
969 dbgprintf(" Maximum app address: %d\n", si->lpMaximumApplicationAddress); | |
970 dbgprintf(" Active processor mask: 0x%x\n", si->dwActiveProcessorMask); | |
971 dbgprintf(" Number of processors: %d\n", si->dwNumberOfProcessors); | |
972 dbgprintf(" Processor type: 0x%x\n", si->dwProcessorType); | |
973 dbgprintf(" Allocation granularity: 0x%x\n", si->dwAllocationGranularity); | |
974 dbgprintf(" Processor level: 0x%x\n", si->wProcessorLevel); | |
975 dbgprintf(" Processor revision: 0x%x\n", si->wProcessorRevision); | |
976 } | |
977 | |
3465 | 978 static void WINAPI expGetSystemInfo(SYSTEM_INFO* si) |
1 | 979 { |
3465 | 980 /* FIXME: better values for the two entries below... */ |
981 static int cache = 0; | |
982 static SYSTEM_INFO cachedsi; | |
983 dbgprintf("GetSystemInfo(%p) =>\n", si); | |
984 | |
985 if (cache) { | |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
986 goto exit; |
3465 | 987 } |
988 memset(PF,0,sizeof(PF)); | |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
989 pf_set = 1; |
3465 | 990 |
991 cachedsi.u.s.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_INTEL; | |
992 cachedsi.dwPageSize = getpagesize(); | |
993 | |
994 /* FIXME: better values for the two entries below... */ | |
995 cachedsi.lpMinimumApplicationAddress = (void *)0x00000000; | |
996 cachedsi.lpMaximumApplicationAddress = (void *)0x7FFFFFFF; | |
997 cachedsi.dwActiveProcessorMask = 1; | |
998 cachedsi.dwNumberOfProcessors = 1; | |
999 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1000 cachedsi.dwAllocationGranularity = 0x10000; | |
1001 cachedsi.wProcessorLevel = 5; /* pentium */ | |
1002 cachedsi.wProcessorRevision = 0x0101; | |
1003 | |
1004 /* mplayer's way to detect PF's */ | |
1005 { | |
17020 | 1006 #include "cpudetect.h" |
3465 | 1007 |
1008 if (gCpuCaps.hasMMX) | |
1009 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1010 if (gCpuCaps.hasSSE) | |
1011 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1012 if (gCpuCaps.hasSSE2) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1013 PF[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; |
3465 | 1014 if (gCpuCaps.has3DNow) |
1015 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
3404 | 1016 |
10013 | 1017 if (gCpuCaps.cpuType == 4) |
1018 { | |
1019 cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1020 cachedsi.wProcessorLevel = 4; | |
1021 } | |
10139
8ac4502b7b3d
10l by me, noticed by a guy with a transmeta cpu, but forgot his name, sorry
alex
parents:
10013
diff
changeset
|
1022 else if (gCpuCaps.cpuType >= 5) |
3404 | 1023 { |
10013 | 1024 cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; |
1025 cachedsi.wProcessorLevel = 5; | |
1026 } | |
1027 else | |
1028 { | |
1029 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1030 cachedsi.wProcessorLevel = 3; | |
3404 | 1031 } |
1032 cachedsi.wProcessorRevision = gCpuCaps.cpuStepping; | |
1033 cachedsi.dwNumberOfProcessors = 1; /* hardcoded */ | |
3465 | 1034 } |
3404 | 1035 |
3405 | 1036 /* MPlayer: linux detection enabled (based on proc/cpuinfo) for checking |
1037 fdiv_bug and fpu emulation flags -- alex/MPlayer */ | |
3404 | 1038 #ifdef __linux__ |
3465 | 1039 { |
1 | 1040 char buf[20]; |
1041 char line[200]; | |
1042 FILE *f = fopen ("/proc/cpuinfo", "r"); | |
1043 | |
1044 if (!f) | |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1045 { |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1046 mp_msg(MSGT_WIN32, MSGL_WARN, "expGetSystemInfo: " |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1047 "/proc/cpuinfo not readable! " |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1048 "Expect bad performance and/or weird behaviour\n"); |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1049 goto exit; |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1050 } |
1 | 1051 while (fgets(line,200,f)!=NULL) { |
3465 | 1052 char *s,*value; |
1053 | |
1054 /* NOTE: the ':' is the only character we can rely on */ | |
1055 if (!(value = strchr(line,':'))) | |
1056 continue; | |
1057 /* terminate the valuename */ | |
1058 *value++ = '\0'; | |
1059 /* skip any leading spaces */ | |
1060 while (*value==' ') value++; | |
1061 if ((s=strchr(value,'\n'))) | |
1062 *s='\0'; | |
1063 | |
1064 /* 2.1 method */ | |
1065 if (!lstrncmpiA(line, "cpu family",strlen("cpu family"))) { | |
1066 if (isdigit (value[0])) { | |
1067 switch (value[0] - '0') { | |
1068 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1069 cachedsi.wProcessorLevel= 3; | |
1070 break; | |
1071 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1072 cachedsi.wProcessorLevel= 4; | |
1073 break; | |
1074 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1075 cachedsi.wProcessorLevel= 5; | |
1076 break; | |
1077 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1078 cachedsi.wProcessorLevel= 5; | |
1079 break; | |
1080 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1081 cachedsi.wProcessorLevel= 5; | |
1082 break; | |
1083 } | |
1 | 1084 } |
3465 | 1085 /* set the CPU type of the current processor */ |
1086 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1087 continue; | |
1088 } | |
1089 /* old 2.0 method */ | |
1090 if (!lstrncmpiA(line, "cpu",strlen("cpu"))) { | |
1091 if ( isdigit (value[0]) && value[1] == '8' && | |
1092 value[2] == '6' && value[3] == 0 | |
1093 ) { | |
1094 switch (value[0] - '0') { | |
1095 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1096 cachedsi.wProcessorLevel= 3; | |
1097 break; | |
1098 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1099 cachedsi.wProcessorLevel= 4; | |
1100 break; | |
1101 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1102 cachedsi.wProcessorLevel= 5; | |
1103 break; | |
1104 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1105 cachedsi.wProcessorLevel= 5; | |
1106 break; | |
1107 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1108 cachedsi.wProcessorLevel= 5; | |
1109 break; | |
1110 } | |
1 | 1111 } |
3465 | 1112 /* set the CPU type of the current processor */ |
1113 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1114 continue; | |
1115 } | |
1116 if (!lstrncmpiA(line,"fdiv_bug",strlen("fdiv_bug"))) { | |
1117 if (!lstrncmpiA(value,"yes",3)) | |
1118 PF[PF_FLOATING_POINT_PRECISION_ERRATA] = TRUE; | |
1119 | |
1120 continue; | |
1121 } | |
1122 if (!lstrncmpiA(line,"fpu",strlen("fpu"))) { | |
1123 if (!lstrncmpiA(value,"no",2)) | |
1124 PF[PF_FLOATING_POINT_EMULATED] = TRUE; | |
1125 | |
1126 continue; | |
1127 } | |
1128 if (!lstrncmpiA(line,"processor",strlen("processor"))) { | |
1129 /* processor number counts up...*/ | |
7386 | 1130 unsigned int x; |
3465 | 1131 |
1132 if (sscanf(value,"%d",&x)) | |
1133 if (x+1>cachedsi.dwNumberOfProcessors) | |
1134 cachedsi.dwNumberOfProcessors=x+1; | |
1135 | |
1136 /* Create a new processor subkey on a multiprocessor | |
1137 * system | |
1138 */ | |
1139 sprintf(buf,"%d",x); | |
1140 } | |
1141 if (!lstrncmpiA(line,"stepping",strlen("stepping"))) { | |
1142 int x; | |
1143 | |
1144 if (sscanf(value,"%d",&x)) | |
1145 cachedsi.wProcessorRevision = x; | |
1146 } | |
1147 if | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1148 ( (!lstrncmpiA(line,"flags",strlen("flags"))) |
3465 | 1149 || (!lstrncmpiA(line,"features",strlen("features"))) ) |
1150 { | |
1151 if (strstr(value,"cx8")) | |
1152 PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE; | |
1153 if (strstr(value,"mmx")) | |
1154 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1155 if (strstr(value,"tsc")) | |
1156 PF[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE; | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1157 if (strstr(value,"xmm") || strstr(value,"sse")) |
3465 | 1158 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1159 if (strstr(value,"sse2")) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1160 PF[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; |
3465 | 1161 if (strstr(value,"3dnow")) |
1162 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1163 } | |
1 | 1164 } |
1165 fclose (f); | |
3465 | 1166 } |
3404 | 1167 #endif /* __linux__ */ |
3465 | 1168 cache = 1; |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1169 exit: |
3465 | 1170 memcpy(si,&cachedsi,sizeof(*si)); |
1171 DumpSystemInfo(si); | |
1 | 1172 } |
1173 | |
7386 | 1174 // avoid undefined expGetSystemInfo |
1175 static WIN_BOOL WINAPI expIsProcessorFeaturePresent(DWORD v) | |
1176 { | |
1177 WIN_BOOL result = 0; | |
1178 if (!pf_set) | |
1179 { | |
1180 SYSTEM_INFO si; | |
1181 expGetSystemInfo(&si); | |
1182 } | |
1183 if(v<64) result=PF[v]; | |
1184 dbgprintf("IsProcessorFeaturePresent(0x%x) => 0x%x\n", v, result); | |
1185 return result; | |
1186 } | |
1187 | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1188 static WIN_BOOL WINAPI expIsDebuggerPresent(void) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1189 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1190 return 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1191 } |
7386 | 1192 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1193 static long WINAPI expGetVersion(void) |
1 | 1194 { |
128 | 1195 dbgprintf("GetVersion() => 0xC0000004\n"); |
1196 return 0xC0000004;//Windows 95 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1197 } |
1 | 1198 |
3465 | 1199 static HANDLE WINAPI expHeapCreate(long flags, long init_size, long max_size) |
1 | 1200 { |
3465 | 1201 // printf("HeapCreate:"); |
128 | 1202 HANDLE result; |
1 | 1203 if(init_size==0) |
3465 | 1204 result=(HANDLE)my_mreq(0x110000, 0); |
1 | 1205 else |
3465 | 1206 result=(HANDLE)my_mreq((init_size + 0xfff) & 0x7ffff000 , 0); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1207 dbgprintf("HeapCreate(flags 0x%x, initial size %d, maximum size %d) => 0x%x\n", flags, init_size, max_size, result); |
128 | 1208 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1209 } |
3128 | 1210 |
1211 // this is another dirty hack | |
3465 | 1212 // VP31 is releasing one allocated Heap chunk twice |
3128 | 1213 // we will silently ignore this second call... |
1214 static void* heapfreehack = 0; | |
1215 static int heapfreehackshown = 0; | |
28051 | 1216 //void trapbug(void); |
3465 | 1217 static void* WINAPI expHeapAlloc(HANDLE heap, int flags, int size) |
1 | 1218 { |
1219 void* z; | |
3465 | 1220 /** |
1221 Morgan's m3jpeg32.dll v. 2.0 encoder expects that request for | |
1222 HeapAlloc returns area larger than size argument :-/ | |
1223 | |
1224 actually according to M$ Doc HeapCreate size should be rounded | |
1225 to page boundaries thus we should simulate this | |
1226 **/ | |
1227 //if (size == 22276) trapbug(); | |
1228 z=my_mreq((size + 0xfff) & 0x7ffff000, (flags & HEAP_ZERO_MEMORY)); | |
1 | 1229 if(z==0) |
1230 printf("HeapAlloc failure\n"); | |
3465 | 1231 dbgprintf("HeapAlloc(heap 0x%x, flags 0x%x, size %d) => 0x%x\n", heap, flags, size, z); |
3128 | 1232 heapfreehack = 0; // reset |
1 | 1233 return z; |
1234 } | |
3465 | 1235 static long WINAPI expHeapDestroy(void* heap) |
1 | 1236 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1237 dbgprintf("HeapDestroy(heap 0x%x) => 1\n", heap); |
1 | 1238 my_release(heap); |
1239 return 1; | |
1240 } | |
1241 | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1242 static long WINAPI expHeapFree(HANDLE heap, DWORD dwFlags, LPVOID lpMem) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1243 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1244 dbgprintf("HeapFree(0x%x, 0x%x, pointer 0x%x) => 1\n", heap, dwFlags, lpMem); |
7386 | 1245 if (heapfreehack != lpMem && lpMem != (void*)0xffffffff |
1246 && lpMem != (void*)0xbdbdbdbd) | |
1247 // 0xbdbdbdbd is for i263_drv.drv && libefence | |
1248 // it seems to be reading from relased memory | |
1249 // EF_PROTECT_FREE doens't show any probleme | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1250 my_release(lpMem); |
3128 | 1251 else |
1252 { | |
3465 | 1253 if (!heapfreehackshown++) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1254 printf("Info: HeapFree deallocating same memory twice! (%p)\n", lpMem); |
3128 | 1255 } |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1256 heapfreehack = lpMem; |
1 | 1257 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1258 } |
3465 | 1259 static long WINAPI expHeapSize(int heap, int flags, void* pointer) |
1 | 1260 { |
128 | 1261 long result=my_size(pointer); |
1262 dbgprintf("HeapSize(heap 0x%x, flags 0x%x, pointer 0x%x) => %d\n", heap, flags, pointer, result); | |
1263 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1264 } |
3465 | 1265 static void* WINAPI expHeapReAlloc(HANDLE heap,int flags,void *lpMem,int size) |
2069 | 1266 { |
3465 | 1267 long orgsize = my_size(lpMem); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1268 dbgprintf("HeapReAlloc() Size %ld org %d\n",orgsize,size); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1269 return my_realloc(lpMem, size); |
2069 | 1270 } |
3465 | 1271 static long WINAPI expGetProcessHeap(void) |
1 | 1272 { |
128 | 1273 dbgprintf("GetProcessHeap() => 1\n"); |
1 | 1274 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1275 } |
3465 | 1276 static void* WINAPI expVirtualAlloc(void* v1, long v2, long v3, long v4) |
1 | 1277 { |
3465 | 1278 void* z = VirtualAlloc(v1, v2, v3, v4); |
1 | 1279 if(z==0) |
1280 printf("VirtualAlloc failure\n"); | |
128 | 1281 dbgprintf("VirtualAlloc(0x%x, %d, %d, %d) => 0x%x \n",v1,v2,v3,v4, z); |
1 | 1282 return z; |
1283 } | |
3465 | 1284 static int WINAPI expVirtualFree(void* v1, int v2, int v3) |
1 | 1285 { |
3465 | 1286 int result = VirtualFree(v1,v2,v3); |
128 | 1287 dbgprintf("VirtualFree(0x%x, %d, %d) => %d\n",v1,v2,v3, result); |
1288 return result; | |
3128 | 1289 } |
2579 | 1290 |
1291 /* we're building a table of critical sections. cs_win pointer uses the DLL | |
3465 | 1292 cs_unix is the real structure, we're using cs_win only to identifying cs_unix */ |
2579 | 1293 struct critsecs_list_t |
1294 { | |
1295 CRITICAL_SECTION *cs_win; | |
1296 struct CRITSECT *cs_unix; | |
1297 }; | |
1298 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1299 /* 'NEWTYPE' is working with VIVO, 3ivX and QTX dll (no more segfaults) -- alex */ |
8393
08e71f6a7531
it seems that old CS is working better than newtype now... :)
arpi
parents:
8391
diff
changeset
|
1300 #undef CRITSECS_NEWTYPE |
08e71f6a7531
it seems that old CS is working better than newtype now... :)
arpi
parents:
8391
diff
changeset
|
1301 //#define CRITSECS_NEWTYPE 1 |
3128 | 1302 |
1303 #ifdef CRITSECS_NEWTYPE | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1304 /* increased due to ucod needs more than 32 entries */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1305 /* and 64 should be enough for everything */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1306 #define CRITSECS_LIST_MAX 64 |
2579 | 1307 static struct critsecs_list_t critsecs_list[CRITSECS_LIST_MAX]; |
1308 | |
3465 | 1309 static int critsecs_get_pos(CRITICAL_SECTION *cs_win) |
2579 | 1310 { |
1311 int i; | |
3128 | 1312 |
2579 | 1313 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1314 if (critsecs_list[i].cs_win == cs_win) | |
26757
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1315 return i; |
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1316 return -1; |
2579 | 1317 } |
1318 | |
3465 | 1319 static int critsecs_get_unused(void) |
2579 | 1320 { |
1321 int i; | |
3128 | 1322 |
2579 | 1323 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1324 if (critsecs_list[i].cs_win == NULL) | |
26757
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1325 return i; |
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1326 return -1; |
2579 | 1327 } |
1328 | |
1329 struct CRITSECT *critsecs_get_unix(CRITICAL_SECTION *cs_win) | |
1330 { | |
1331 int i; | |
3128 | 1332 |
2579 | 1333 for (i=0; i < CRITSECS_LIST_MAX; i++) |
2670 | 1334 if (critsecs_list[i].cs_win == cs_win && critsecs_list[i].cs_unix) |
26757
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1335 return critsecs_list[i].cs_unix; |
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1336 return NULL; |
2579 | 1337 } |
1338 #endif | |
1339 | |
3465 | 1340 static void WINAPI expInitializeCriticalSection(CRITICAL_SECTION* c) |
1 | 1341 { |
128 | 1342 dbgprintf("InitializeCriticalSection(0x%x)\n", c); |
3465 | 1343 /* if(sizeof(pthread_mutex_t)>sizeof(CRITICAL_SECTION)) |
1344 { | |
1345 printf(" ERROR:::: sizeof(pthread_mutex_t) is %d, expected <=%d!\n", | |
1346 sizeof(pthread_mutex_t), sizeof(CRITICAL_SECTION)); | |
1347 return; | |
1348 }*/ | |
1349 /* pthread_mutex_init((pthread_mutex_t*)c, NULL); */ | |
2579 | 1350 #ifdef CRITSECS_NEWTYPE |
1351 { | |
3465 | 1352 struct CRITSECT *cs; |
1353 int i = critsecs_get_unused(); | |
1354 | |
1355 if (i < 0) | |
1356 { | |
1357 printf("InitializeCriticalSection(%p) - no more space in list\n", c); | |
1358 return; | |
1359 } | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1360 dbgprintf("got unused space at %d\n", i); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1361 cs = malloc(sizeof(struct CRITSECT)); |
3465 | 1362 if (!cs) |
1363 { | |
1364 printf("InitializeCriticalSection(%p) - out of memory\n", c); | |
1365 return; | |
1366 } | |
1367 pthread_mutex_init(&cs->mutex, NULL); | |
30795 | 1368 pthread_cond_init(&cs->unlocked, NULL); |
1369 cs->lock_count = 0; | |
3465 | 1370 critsecs_list[i].cs_win = c; |
1371 critsecs_list[i].cs_unix = cs; | |
1372 dbgprintf("InitializeCriticalSection -> itemno=%d, cs_win=%p, cs_unix=%p\n", | |
1373 i, c, cs); | |
2579 | 1374 } |
3465 | 1375 #else |
2670 | 1376 { |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1377 struct CRITSECT* cs = mreq_private(sizeof(struct CRITSECT) + sizeof(CRITICAL_SECTION), |
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1378 0, AREATYPE_CRITSECT); |
3465 | 1379 pthread_mutex_init(&cs->mutex, NULL); |
30795 | 1380 pthread_cond_init(&cs->unlocked, NULL); |
1381 cs->lock_count = 0; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1382 cs->deadbeef = 0xdeadbeef; |
7718 | 1383 *(void**)c = cs; |
2670 | 1384 } |
2579 | 1385 #endif |
1 | 1386 return; |
2579 | 1387 } |
1388 | |
30871
24a1c1f79296
Fix return value of InitializeCriticalSectionAndSpinCount.
sesse
parents:
30860
diff
changeset
|
1389 static WIN_BOOL WINAPI expInitializeCriticalSectionAndSpinCount(CRITICAL_SECTION* c, DWORD spin) |
30598
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1390 { |
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1391 expInitializeCriticalSection(c); |
30871
24a1c1f79296
Fix return value of InitializeCriticalSectionAndSpinCount.
sesse
parents:
30860
diff
changeset
|
1392 return 1; |
30598
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1393 } |
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1394 |
3465 | 1395 static void WINAPI expEnterCriticalSection(CRITICAL_SECTION* c) |
1 | 1396 { |
2579 | 1397 #ifdef CRITSECS_NEWTYPE |
1398 struct CRITSECT* cs = critsecs_get_unix(c); | |
1399 #else | |
7718 | 1400 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1401 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1402 dbgprintf("EnterCriticalSection(0x%x) %p\n",c, cs); |
2069 | 1403 if (!cs) |
1404 { | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1405 dbgprintf("entered uninitialized critisec!\n"); |
2069 | 1406 expInitializeCriticalSection(c); |
2579 | 1407 #ifdef CRITSECS_NEWTYPE |
1408 cs=critsecs_get_unix(c); | |
1409 #else | |
7718 | 1410 cs = (*(struct CRITSECT**)c); |
2579 | 1411 #endif |
12074 | 1412 dbgprintf("Win32 Warning: Accessed uninitialized Critical Section (%p)!\n", c); |
2069 | 1413 } |
1 | 1414 pthread_mutex_lock(&(cs->mutex)); |
30795 | 1415 if (cs->lock_count > 0 && cs->id == pthread_self()) { |
1416 cs->lock_count++; | |
1417 } else { | |
1418 while (cs->lock_count != 0) { | |
1419 pthread_cond_wait(&(cs->unlocked), &(cs->mutex)); | |
1420 } | |
1421 cs->lock_count = 1; | |
1422 cs->id = pthread_self(); | |
1423 } | |
1424 pthread_mutex_unlock(&(cs->mutex)); | |
1 | 1425 return; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1426 } |
3465 | 1427 static void WINAPI expLeaveCriticalSection(CRITICAL_SECTION* c) |
1 | 1428 { |
2579 | 1429 #ifdef CRITSECS_NEWTYPE |
1430 struct CRITSECT* cs = critsecs_get_unix(c); | |
1431 #else | |
7718 | 1432 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1433 #endif |
3465 | 1434 // struct CRITSECT* cs=(struct CRITSECT*)c; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1435 dbgprintf("LeaveCriticalSection(0x%x) 0x%x\n",c, cs); |
2069 | 1436 if (!cs) |
1437 { | |
12074 | 1438 dbgprintf("Win32 Warning: Leaving uninitialized Critical Section %p!!\n", c); |
2069 | 1439 return; |
1440 } | |
30795 | 1441 pthread_mutex_lock(&(cs->mutex)); |
1442 if (cs->lock_count == 0) { | |
1443 dbgprintf("Win32 Warning: Unlocking unlocked Critical Section %p!!\n", c); | |
1444 } else { | |
1445 cs->lock_count--; | |
11852
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1446 } |
30795 | 1447 if (cs->lock_count == 0) { |
1448 pthread_cond_signal(&(cs->unlocked)); | |
1449 } | |
1450 pthread_mutex_unlock(&(cs->mutex)); | |
1 | 1451 return; |
1452 } | |
8451 | 1453 |
1454 static void expfree(void* mem); /* forward declaration */ | |
1455 | |
3465 | 1456 static void WINAPI expDeleteCriticalSection(CRITICAL_SECTION *c) |
1 | 1457 { |
2579 | 1458 #ifdef CRITSECS_NEWTYPE |
1459 struct CRITSECT* cs = critsecs_get_unix(c); | |
1460 #else | |
7718 | 1461 struct CRITSECT* cs= (*(struct CRITSECT**)c); |
2579 | 1462 #endif |
3465 | 1463 // struct CRITSECT* cs=(struct CRITSECT*)c; |
128 | 1464 dbgprintf("DeleteCriticalSection(0x%x)\n",c); |
3465 | 1465 |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1466 if (!cs) |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1467 { |
12074 | 1468 dbgprintf("Win32 Warning: Deleting uninitialized Critical Section %p!!\n", c); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1469 return; |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1470 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
1471 |
30795 | 1472 pthread_mutex_lock(&(cs->mutex)); |
1473 if (cs->lock_count > 0) | |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1474 { |
30795 | 1475 dbgprintf("Win32 Warning: Deleting locked Critical Section %p!!\n", c); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1476 } |
30795 | 1477 pthread_mutex_unlock(&(cs->mutex)); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1478 |
3465 | 1479 #ifndef GARBAGE |
128 | 1480 pthread_mutex_destroy(&(cs->mutex)); |
30795 | 1481 pthread_cond_destroy(&(cs->unlocked)); |
3465 | 1482 // released by GarbageCollector in my_relase otherwise |
1483 #endif | |
1484 my_release(cs); | |
2579 | 1485 #ifdef CRITSECS_NEWTYPE |
1486 { | |
3465 | 1487 int i = critsecs_get_pos(c); |
1488 | |
1489 if (i < 0) | |
1490 { | |
1491 printf("DeleteCriticalSection(%p) error (critsec not found)\n", c); | |
1492 return; | |
1493 } | |
1494 | |
1495 critsecs_list[i].cs_win = NULL; | |
1496 expfree(critsecs_list[i].cs_unix); | |
1497 critsecs_list[i].cs_unix = NULL; | |
1498 dbgprintf("DeleteCriticalSection -> itemno=%d\n", i); | |
2579 | 1499 } |
1500 #endif | |
1 | 1501 return; |
1502 } | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1503 static int WINAPI expGetCurrentThreadId(void) |
1 | 1504 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1505 dbgprintf("GetCurrentThreadId() => %d\n", pthread_self()); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1506 return pthread_self(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1507 } |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1508 static int WINAPI expGetCurrentProcess(void) |
128 | 1509 { |
1510 dbgprintf("GetCurrentProcess() => %d\n", getpid()); | |
1 | 1511 return getpid(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1512 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1513 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
1514 #ifdef CONFIG_QTX_CODECS |
3128 | 1515 // this version is required for Quicktime codecs (.qtx/.qts) to work. |
1516 // (they assume some pointers at FS: segment) | |
1517 | |
2779 | 1518 //static int tls_count; |
1519 static int tls_use_map[64]; | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1520 static int WINAPI expTlsAlloc(void) |
2779 | 1521 { |
1522 int i; | |
1523 for(i=0; i<64; i++) | |
1524 if(tls_use_map[i]==0) | |
1525 { | |
1526 tls_use_map[i]=1; | |
5234 | 1527 dbgprintf("TlsAlloc() => %d\n",i); |
2779 | 1528 return i; |
1529 } | |
5234 | 1530 dbgprintf("TlsAlloc() => -1 (ERROR)\n"); |
2779 | 1531 return -1; |
1532 } | |
1533 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1534 //static int WINAPI expTlsSetValue(DWORD index, void* value) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1535 static int WINAPI expTlsSetValue(int index, void* value) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1536 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1537 dbgprintf("TlsSetValue(%d,0x%x) => 1\n",index,value); |
5234 | 1538 // if((index<0) || (index>64)) |
1539 if((index>=64)) | |
2779 | 1540 return 0; |
1541 *(void**)((char*)fs_seg+0x88+4*index) = value; | |
1542 return 1; | |
1543 } | |
1544 | |
5234 | 1545 static void* WINAPI expTlsGetValue(DWORD index) |
1546 { | |
1547 dbgprintf("TlsGetValue(%d)\n",index); | |
1548 // if((index<0) || (index>64)) | |
1549 if((index>=64)) return NULL; | |
1550 return *(void**)((char*)fs_seg+0x88+4*index); | |
2779 | 1551 } |
1552 | |
3465 | 1553 static int WINAPI expTlsFree(int idx) |
2779 | 1554 { |
3465 | 1555 int index = (int) idx; |
5234 | 1556 dbgprintf("TlsFree(%d)\n",index); |
2779 | 1557 if((index<0) || (index>64)) |
1558 return 0; | |
1559 tls_use_map[index]=0; | |
1560 return 1; | |
1561 } | |
1562 | |
1563 #else | |
2069 | 1564 struct tls_s { |
1 | 1565 void* value; |
1566 int used; | |
1567 struct tls_s* prev; | |
1568 struct tls_s* next; | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1569 }; |
2069 | 1570 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1571 static void* WINAPI expTlsAlloc(void) |
1 | 1572 { |
7386 | 1573 if (g_tls == NULL) |
1 | 1574 { |
1575 g_tls=my_mreq(sizeof(tls_t), 0); | |
1576 g_tls->next=g_tls->prev=NULL; | |
1577 } | |
1578 else | |
1579 { | |
1580 g_tls->next=my_mreq(sizeof(tls_t), 0); | |
1581 g_tls->next->prev=g_tls; | |
1582 g_tls->next->next=NULL; | |
1583 g_tls=g_tls->next; | |
1584 } | |
128 | 1585 dbgprintf("TlsAlloc() => 0x%x\n", g_tls); |
2670 | 1586 if (g_tls) |
1587 g_tls->value=0; /* XXX For Divx.dll */ | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1588 return g_tls; |
1 | 1589 } |
1590 | |
3465 | 1591 static int WINAPI expTlsSetValue(void* idx, void* value) |
1 | 1592 { |
3465 | 1593 tls_t* index = (tls_t*) idx; |
128 | 1594 int result; |
1 | 1595 if(index==0) |
128 | 1596 result=0; |
1597 else | |
1598 { | |
1599 index->value=value; | |
1600 result=1; | |
1601 } | |
1602 dbgprintf("TlsSetValue(index 0x%x, value 0x%x) => %d \n", index, value, result ); | |
1603 return result; | |
1 | 1604 } |
3465 | 1605 static void* WINAPI expTlsGetValue(void* idx) |
1 | 1606 { |
3465 | 1607 tls_t* index = (tls_t*) idx; |
128 | 1608 void* result; |
1 | 1609 if(index==0) |
128 | 1610 result=0; |
1611 else | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1612 result=index->value; |
128 | 1613 dbgprintf("TlsGetValue(index 0x%x) => 0x%x\n", index, result); |
1614 return result; | |
1 | 1615 } |
3465 | 1616 static int WINAPI expTlsFree(void* idx) |
1 | 1617 { |
3465 | 1618 tls_t* index = (tls_t*) idx; |
128 | 1619 int result; |
1 | 1620 if(index==0) |
128 | 1621 result=0; |
1622 else | |
1623 { | |
1624 if(index->next) | |
1625 index->next->prev=index->prev; | |
1626 if(index->prev) | |
3465 | 1627 index->prev->next=index->next; |
7386 | 1628 if (g_tls == index) |
1629 g_tls = index->prev; | |
128 | 1630 my_release((void*)index); |
1631 result=1; | |
1632 } | |
1633 dbgprintf("TlsFree(index 0x%x) => %d\n", index, result); | |
1634 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1635 } |
2779 | 1636 #endif |
1637 | |
3465 | 1638 static void* WINAPI expLocalAlloc(int flags, int size) |
1 | 1639 { |
3465 | 1640 void* z = my_mreq(size, (flags & GMEM_ZEROINIT)); |
1641 if (z == 0) | |
1 | 1642 printf("LocalAlloc() failed\n"); |
128 | 1643 dbgprintf("LocalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); |
1 | 1644 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1645 } |
2069 | 1646 |
3465 | 1647 static void* WINAPI expLocalReAlloc(int handle,int size, int flags) |
2069 | 1648 { |
3465 | 1649 void *newpointer; |
1650 int oldsize; | |
1651 | |
1652 newpointer=NULL; | |
1653 if (flags & LMEM_MODIFY) { | |
1654 dbgprintf("LocalReAlloc MODIFY\n"); | |
1655 return (void *)handle; | |
1656 } | |
1657 oldsize = my_size((void *)handle); | |
1658 newpointer = my_realloc((void *)handle,size); | |
1659 dbgprintf("LocalReAlloc(%x %d(old %d), flags 0x%x) => 0x%x\n", handle,size,oldsize, flags,newpointer); | |
1660 | |
1661 return newpointer; | |
2069 | 1662 } |
1663 | |
3465 | 1664 static void* WINAPI expLocalLock(void* z) |
1 | 1665 { |
128 | 1666 dbgprintf("LocalLock(0x%x) => 0x%x\n", z, z); |
1 | 1667 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1668 } |
128 | 1669 |
3465 | 1670 static void* WINAPI expGlobalAlloc(int flags, int size) |
1 | 1671 { |
1672 void* z; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1673 dbgprintf("GlobalAlloc(%d, flags 0x%X)\n", size, flags); |
3465 | 1674 |
1675 z=my_mreq(size, (flags & GMEM_ZEROINIT)); | |
1676 //z=calloc(size, 1); | |
1677 //z=malloc(size); | |
1 | 1678 if(z==0) |
128 | 1679 printf("GlobalAlloc() failed\n"); |
1680 dbgprintf("GlobalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); | |
1 | 1681 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1682 } |
3465 | 1683 static void* WINAPI expGlobalLock(void* z) |
1 | 1684 { |
128 | 1685 dbgprintf("GlobalLock(0x%x) => 0x%x\n", z, z); |
1 | 1686 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1687 } |
3128 | 1688 // pvmjpg20 - but doesn't work anyway |
3465 | 1689 static int WINAPI expGlobalSize(void* amem) |
3128 | 1690 { |
1691 int size = 100000; | |
1692 #ifdef GARBAGE | |
1693 alloc_header* header = last_alloc; | |
1694 alloc_header* mem = (alloc_header*) amem - 1; | |
1695 if (amem == 0) | |
3465 | 1696 return 0; |
3128 | 1697 pthread_mutex_lock(&memmut); |
1698 while (header) | |
1699 { | |
3465 | 1700 if (header->deadbeef != 0xdeadbeef) |
1701 { | |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
1702 dbgprintf("FATAL found corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt); |
3465 | 1703 break; |
1704 } | |
1705 | |
1706 if (header == mem) | |
1707 { | |
1708 size = header->size; | |
1709 break; | |
1710 } | |
1711 | |
1712 header = header->prev; | |
3128 | 1713 } |
1714 pthread_mutex_unlock(&memmut); | |
1715 #endif | |
1716 | |
1717 dbgprintf("GlobalSize(0x%x)\n", amem); | |
1718 return size; | |
1719 } | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1720 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1721 static int WINAPI expLoadIconA( long hinstance, char *name ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1722 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1723 dbgprintf("LoadIconA( %ld, 0x%x ) => 1\n",hinstance,name); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1724 return 1; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1725 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1726 |
3465 | 1727 static int WINAPI expLoadStringA(long instance, long id, void* buf, long size) |
1 | 1728 { |
128 | 1729 int result=LoadStringA(instance, id, buf, size); |
3465 | 1730 // if(buf) |
128 | 1731 dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d ( %s )\n", |
3465 | 1732 instance, id, buf, size, result, buf); |
1733 // else | |
1734 // dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d\n", | |
1735 // instance, id, buf, size, result); | |
128 | 1736 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1737 } |
1 | 1738 |
3465 | 1739 static long WINAPI expMultiByteToWideChar(long v1, long v2, char* s1, long siz1, short* s2, int siz2) |
1 | 1740 { |
32394
914208d188b9
Remove #warning preprocessor directives or replace them by suitable comments.
diego
parents:
32352
diff
changeset
|
1741 /* FIXME */ |
128 | 1742 int i; |
1743 int result; | |
1 | 1744 if(s2==0) |
3465 | 1745 result=1; |
128 | 1746 else |
1747 { | |
3465 | 1748 if(siz1>siz2/2)siz1=siz2/2; |
1749 for(i=1; i<=siz1; i++) | |
1750 { | |
1751 *s2=*s1; | |
1752 if(!*s1)break; | |
1753 s2++; | |
1754 s1++; | |
1755 } | |
1756 result=i; | |
128 | 1757 } |
1758 if(s1) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1759 dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string 0x%x='%s'," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1760 "size %d, dest buffer 0x%x, dest size %d) => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1761 v1, v2, s1, s1, siz1, s2, siz2, result); |
128 | 1762 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1763 dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string NULL," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1764 "size %d, dest buffer 0x%x, dest size %d) =>\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1765 v1, v2, siz1, s2, siz2, result); |
128 | 1766 return result; |
1767 } | |
1768 static void wch_print(const short* str) | |
1769 { | |
1770 dbgprintf(" src: "); | |
1771 while(*str)dbgprintf("%c", *str++); | |
1772 dbgprintf("\n"); | |
1 | 1773 } |
3465 | 1774 static long WINAPI expWideCharToMultiByte(long v1, long v2, short* s1, long siz1, |
1775 char* s2, int siz2, char* c3, int* siz3) | |
1 | 1776 { |
1777 int result; | |
128 | 1778 dbgprintf("WideCharToMultiByte(codepage %d, flags 0x%x, src 0x%x, src size %d, " |
3465 | 1779 "dest 0x%x, dest size %d, defch 0x%x, used_defch 0x%x)", v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1 | 1780 result=WideCharToMultiByte(v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1781 dbgprintf("=> %d\n", result); | |
2069 | 1782 //if(s1)wch_print(s1); |
128 | 1783 if(s2)dbgprintf(" dest: %s\n", s2); |
1 | 1784 return result; |
1785 } | |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1786 |
3465 | 1787 static long WINAPI expGetVersionExA(OSVERSIONINFOA* c) |
1 | 1788 { |
30885
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1789 dbgprintf("GetVersionExA(0x%x) => 1\n", c); |
128 | 1790 c->dwOSVersionInfoSize=sizeof(*c); |
30885
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1791 c->dwMajorVersion=5; |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1792 c->dwMinorVersion=1; |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1793 c->dwBuildNumber=0x5010a28; |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1794 c->dwPlatformId=VER_PLATFORM_WIN32_NT; |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1795 strcpy(c->szCSDVersion, "Service Pack 2"); |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1796 dbgprintf(" Major version: 5\n Minor version: 1\n Build number: 0x5010a28\n" |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1797 " Platform Id: VER_PLATFORM_WIN32_NT\n Version string: 'Service Pack 2'\n"); |
1 | 1798 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1799 } |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1800 |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1801 static long WINAPI expGetVersionExW(OSVERSIONINFOW* c) |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1802 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1803 char CSDVersion[128]; |
30885
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1804 dbgprintf("GetVersionExW(0x%x) => 1\n", c); |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1805 c->dwOSVersionInfoSize=sizeof(*c); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1806 c->dwMajorVersion=5; |
30885
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1807 c->dwMinorVersion=1; |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1808 c->dwBuildNumber=0x5010a28; |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1809 c->dwPlatformId=VER_PLATFORM_WIN32_NT; |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1810 strcpy(CSDVersion, "Service Pack 2"); |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1811 MultiByteToWideChar(65001, 0x0, CSDVersion, -1, c->szCSDVersion, 128); |
30885
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1812 dbgprintf(" Major version: 5\n Minor version: 1\n Build number: 0x5010a28\n" |
c634d15b475f
Announce Windows XP SP2 instead of Windows 95 OSR2.
sesse
parents:
30884
diff
changeset
|
1813 " Platform Id: VER_PLATFORM_WIN32_NT\n Version string: 'Service Pack 2'\n"); |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1814 return 1; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1815 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1816 |
3465 | 1817 static HANDLE WINAPI expCreateSemaphoreA(char* v1, long init_count, |
1818 long max_count, char* name) | |
1 | 1819 { |
128 | 1820 pthread_mutex_t *pm; |
1821 pthread_cond_t *pc; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1822 HANDLE ret; |
24385 | 1823 /* |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1824 mutex_list* pp; |
3465 | 1825 printf("CreateSemaphoreA(%p = %s)\n", name, (name ? name : "<null>")); |
1826 pp=mlist; | |
1827 while(pp) | |
1828 { | |
1829 printf("%p => ", pp); | |
1830 pp=pp->prev; | |
1831 } | |
1832 printf("0\n"); | |
1833 */ | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1834 pthread_mutex_lock(&mlist_lock); |
128 | 1835 if(mlist!=NULL) |
1 | 1836 { |
128 | 1837 mutex_list* pp=mlist; |
1838 if(name!=NULL) | |
3465 | 1839 do |
128 | 1840 { |
1841 if((strcmp(pp->name, name)==0) && (pp->type==1)) | |
1842 { | |
3465 | 1843 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1844 v1, init_count, max_count, name, name, mlist); | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1845 ret = (HANDLE)mlist; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1846 pthread_mutex_unlock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1847 return ret; |
128 | 1848 } |
2069 | 1849 }while((pp=pp->prev) != NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1850 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1851 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
128 | 1852 pthread_mutex_init(pm, NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1853 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 1854 pthread_cond_init(pc, NULL); |
1855 if(mlist==NULL) | |
1856 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1857 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1858 mlist->next=mlist->prev=NULL; |
1859 } | |
1860 else | |
1 | 1861 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1862 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1863 mlist->next->prev=mlist; |
1864 mlist->next->next=NULL; | |
1865 mlist=mlist->next; | |
3465 | 1866 // printf("new semaphore %p\n", mlist); |
1 | 1867 } |
128 | 1868 mlist->type=1; /* Type Semaphore */ |
1869 mlist->pm=pm; | |
1870 mlist->pc=pc; | |
1871 mlist->state=0; | |
1872 mlist->reset=0; | |
1873 mlist->semaphore=init_count; | |
1874 if(name!=NULL) | |
3465 | 1875 strncpy(mlist->name, name, 64); |
128 | 1876 else |
1877 mlist->name[0]=0; | |
1878 if(pm==NULL) | |
1879 dbgprintf("ERROR::: CreateSemaphoreA failure\n"); | |
1880 if(name) | |
3465 | 1881 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1882 v1, init_count, max_count, name, name, mlist); | |
128 | 1883 else |
3465 | 1884 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0) => 0x%x\n", |
1885 v1, init_count, max_count, mlist); | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1886 ret = (HANDLE)mlist; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1887 pthread_mutex_unlock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1888 return ret; |
1 | 1889 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1890 |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1891 static HANDLE WINAPI expCreateSemaphoreW(char* v1, long init_count, |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1892 long max_count, const WCHAR* name) |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1893 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1894 char ascii_name[256]; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1895 char *aname = NULL; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1896 if (name) { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1897 WideCharToMultiByte(65001, 0x0, name, -1, ascii_name, 256, NULL, NULL); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1898 aname = ascii_name; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1899 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1900 return expCreateSemaphoreA(v1, init_count, max_count, aname); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1901 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1902 |
3465 | 1903 static long WINAPI expReleaseSemaphore(long hsem, long increment, long* prev_count) |
1 | 1904 { |
3465 | 1905 // The state of a semaphore object is signaled when its count |
1906 // is greater than zero and nonsignaled when its count is equal to zero | |
1907 // Each time a waiting thread is released because of the semaphore's signaled | |
1908 // state, the count of the semaphore is decreased by one. | |
128 | 1909 mutex_list *ml = (mutex_list *)hsem; |
1 | 1910 |
128 | 1911 pthread_mutex_lock(ml->pm); |
1912 if (prev_count != 0) *prev_count = ml->semaphore; | |
1913 if (ml->semaphore == 0) pthread_cond_signal(ml->pc); | |
1914 ml->semaphore += increment; | |
1915 pthread_mutex_unlock(ml->pm); | |
1916 dbgprintf("ReleaseSemaphore(semaphore 0x%x, increment %d, prev_count 0x%x) => 1\n", | |
3465 | 1917 hsem, increment, prev_count); |
128 | 1918 return 1; |
1 | 1919 } |
1920 | |
30811 | 1921 static HANDLE WINAPI expCreateMutexA(void *pSecAttr, |
1922 char bInitialOwner, const char *name) | |
1923 { | |
1924 pthread_mutex_t *pm; | |
1925 pthread_cond_t *pc; | |
1926 HANDLE ret; | |
1927 pthread_mutex_lock(&mlist_lock); | |
1928 if(mlist!=NULL) | |
1929 { | |
1930 mutex_list* pp=mlist; | |
1931 if(name!=NULL) | |
1932 do | |
1933 { | |
1934 if((strcmp(pp->name, name)==0) && (pp->type==2)) | |
1935 { | |
1936 dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n", pSecAttr, bInitialOwner, name, mlist); | |
1937 ret = (HANDLE)mlist; | |
1938 pthread_mutex_unlock(&mlist_lock); | |
1939 return ret; | |
1940 } | |
1941 }while((pp=pp->prev) != NULL); | |
1942 } | |
1943 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); | |
1944 pthread_mutex_init(pm, NULL); | |
1945 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); | |
1946 pthread_cond_init(pc, NULL); | |
1947 if(mlist==NULL) | |
1948 { | |
1949 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); | |
1950 mlist->next=mlist->prev=NULL; | |
1951 } | |
1952 else | |
1953 { | |
1954 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); | |
1955 mlist->next->prev=mlist; | |
1956 mlist->next->next=NULL; | |
1957 mlist=mlist->next; | |
1958 } | |
1959 mlist->type=2; /* Type Mutex */ | |
1960 mlist->pm=pm; | |
1961 mlist->pc=pc; | |
1962 mlist->state=0; | |
1963 mlist->reset=0; | |
1964 mlist->semaphore=0; | |
1965 if (bInitialOwner) { | |
1966 mlist->owner = pthread_self(); | |
1967 mlist->lock_count = 1; | |
1968 } else { | |
1969 mlist->owner = (pthread_t)0; | |
1970 mlist->lock_count = 0; | |
1971 } | |
1972 if(name!=NULL) | |
1973 strncpy(mlist->name, name, 64); | |
1974 else | |
1975 mlist->name[0]=0; | |
1976 if(pm==NULL) | |
1977 dbgprintf("ERROR::: CreateMutexA failure\n"); | |
1978 if(name) | |
1979 dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n", | |
1980 pSecAttr, bInitialOwner, name, mlist); | |
1981 else | |
1982 dbgprintf("CreateMutexA(0x%x, %d, NULL) => 0x%x\n", | |
1983 pSecAttr, bInitialOwner, mlist); | |
1984 ret = (HANDLE)mlist; | |
1985 pthread_mutex_unlock(&mlist_lock); | |
1986 return ret; | |
1987 } | |
1988 | |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1989 static HANDLE WINAPI expCreateMutexW(void *pSecAttr, char bInitialOwner, const WCHAR *name) |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1990 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1991 char ascii_name[256]; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1992 char *aname = NULL; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1993 if (name) { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1994 WideCharToMultiByte(65001, 0x0, name, -1, ascii_name, 256, NULL, NULL); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1995 aname = ascii_name; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1996 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1997 return expCreateMutexA(pSecAttr, bInitialOwner, aname); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1998 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1999 |
30811 | 2000 static int WINAPI expReleaseMutex(HANDLE hMutex) |
2001 { | |
2002 mutex_list *ml = (mutex_list *)hMutex; | |
2003 | |
2004 pthread_mutex_lock(ml->pm); | |
2005 if (--ml->lock_count == 0) pthread_cond_signal(ml->pc); | |
2006 pthread_mutex_unlock(ml->pm); | |
2007 return 1; | |
2008 } | |
1 | 2009 |
30819 | 2010 static DWORD WINAPI expSignalObjectAndWait(HANDLE hObjectToSignal, |
2011 HANDLE hObjectToWaitOn, | |
2012 DWORD dwMilliseconds, | |
2013 WIN_BOOL bAlertable) { | |
2014 mutex_list* mlist = (mutex_list*)hObjectToSignal; | |
2015 | |
2016 switch (mlist->type) { | |
2017 case 0: // Event | |
2018 expSetEvent(mlist); | |
2019 break; | |
2020 case 1: // Semaphore | |
2021 expReleaseSemaphore(mlist, 1, NULL); | |
2022 break; | |
2023 case 2: // Mutex | |
2024 expReleaseMutex(mlist); | |
2025 break; | |
2026 default: | |
2027 dbgprintf("Signalling unknown object type %d!\n", hObjectToSignal); | |
2028 } | |
2029 return expWaitForSingleObject(hObjectToWaitOn, dwMilliseconds); | |
2030 } | |
2031 | |
3465 | 2032 static long WINAPI expRegOpenKeyExA(long key, const char* subkey, long reserved, long access, int* newkey) |
1 | 2033 { |
128 | 2034 long result=RegOpenKeyExA(key, subkey, reserved, access, newkey); |
2035 dbgprintf("RegOpenKeyExA(key 0x%x, subkey %s, reserved %d, access 0x%x, pnewkey 0x%x) => %d\n", | |
3465 | 2036 key, subkey, reserved, access, newkey, result); |
128 | 2037 if(newkey)dbgprintf(" New key: 0x%x\n", *newkey); |
2038 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2039 } |
3465 | 2040 static long WINAPI expRegCloseKey(long key) |
1 | 2041 { |
128 | 2042 long result=RegCloseKey(key); |
2043 dbgprintf("RegCloseKey(0x%x) => %d\n", key, result); | |
2044 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2045 } |
3465 | 2046 static long WINAPI expRegQueryValueExA(long key, const char* value, int* reserved, int* type, int* data, int* count) |
1 | 2047 { |
128 | 2048 long result=RegQueryValueExA(key, value, reserved, type, data, count); |
2049 dbgprintf("RegQueryValueExA(key 0x%x, value %s, reserved 0x%x, data 0x%x, count 0x%x)" | |
3465 | 2050 " => 0x%x\n", key, value, reserved, data, count, result); |
128 | 2051 if(data && count)dbgprintf(" read %d bytes: '%s'\n", *count, data); |
2052 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2053 } |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2054 |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2055 //from wine source dlls/advapi32/registry.c |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2056 static long WINAPI expRegCreateKeyA(long hkey, const char* name, int *retkey) |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2057 { |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2058 dbgprintf("RegCreateKeyA(key 0x%x, name 0x%x='%s',newkey=0x%x)\n",hkey,name,retkey); |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2059 return RegCreateKeyExA( hkey, name, 0, NULL,REG_OPTION_NON_VOLATILE, |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2060 KEY_ALL_ACCESS , NULL, retkey, NULL ); |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2061 } |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2062 |
3465 | 2063 static long WINAPI expRegCreateKeyExA(long key, const char* name, long reserved, |
2064 void* classs, long options, long security, | |
2065 void* sec_attr, int* newkey, int* status) | |
1 | 2066 { |
128 | 2067 long result=RegCreateKeyExA(key, name, reserved, classs, options, security, sec_attr, newkey, status); |
2068 dbgprintf("RegCreateKeyExA(key 0x%x, name 0x%x='%s', reserved=0x%x," | |
3465 | 2069 " 0x%x, 0x%x, 0x%x, newkey=0x%x, status=0x%x) => %d\n", |
2070 key, name, name, reserved, classs, options, security, sec_attr, newkey, status, result); | |
128 | 2071 if(!result && newkey) dbgprintf(" New key: 0x%x\n", *newkey); |
2072 if(!result && status) dbgprintf(" New key status: 0x%x\n", *status); | |
2073 return result; | |
1 | 2074 } |
3465 | 2075 static long WINAPI expRegSetValueExA(long key, const char* name, long v1, long v2, void* data, long size) |
1 | 2076 { |
128 | 2077 long result=RegSetValueExA(key, name, v1, v2, data, size); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2078 dbgprintf("RegSetValueExA(key 0x%x, name '%s', 0x%x, 0x%x, data 0x%x -> 0x%x '%s', size=%d) => %d", |
3465 | 2079 key, name, v1, v2, data, *(int*)data, data, size, result); |
128 | 2080 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2081 } |
1 | 2082 |
3465 | 2083 static long WINAPI expRegOpenKeyA (long hKey, LPCSTR lpSubKey, int* phkResult) |
3134 | 2084 { |
128 | 2085 long result=RegOpenKeyExA(hKey, lpSubKey, 0, 0, phkResult); |
2086 dbgprintf("RegOpenKeyExA(key 0x%x, subkey '%s', 0x%x) => %d\n", | |
3465 | 2087 hKey, lpSubKey, phkResult, result); |
128 | 2088 if(!result && phkResult) dbgprintf(" New key: 0x%x\n", *phkResult); |
2089 return result; | |
1 | 2090 } |
2091 | |
3465 | 2092 static DWORD WINAPI expRegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count, |
2093 LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count) | |
2069 | 2094 { |
2095 return RegEnumValueA(hkey, index, value, val_count, | |
2096 reserved, type, data, count); | |
2097 } | |
2098 | |
3465 | 2099 static DWORD WINAPI expRegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, |
2100 LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, | |
2101 LPFILETIME lpftLastWriteTime) | |
2102 { | |
2103 return RegEnumKeyExA(hKey, dwIndex, lpName, lpcbName, lpReserved, lpClass, | |
2104 lpcbClass, lpftLastWriteTime); | |
2105 } | |
2106 | |
2107 static long WINAPI expQueryPerformanceCounter(long long* z) | |
1 | 2108 { |
2109 longcount(z); | |
128 | 2110 dbgprintf("QueryPerformanceCounter(0x%x) => 1 ( %Ld )\n", z, *z); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2111 return 1; |
1 | 2112 } |
2113 | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2114 /* |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2115 * dummy function RegQueryInfoKeyA(), required by vss codecs |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2116 */ |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2117 static DWORD WINAPI expRegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWORD reserved, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2118 LPDWORD subkeys, LPDWORD max_subkey, LPDWORD max_class, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2119 LPDWORD values, LPDWORD max_value, LPDWORD max_data, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2120 LPDWORD security, FILETIME *modif ) |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2121 { |
13182 | 2122 return ERROR_SUCCESS; |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2123 } |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2124 |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2125 /* |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2126 * return CPU clock (in kHz), using linux's /proc filesystem (/proc/cpuinfo) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2127 */ |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2128 static double linux_cpuinfo_freq(void) |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2129 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2130 double freq=-1; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2131 FILE *f; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2132 char line[200]; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2133 char *s,*value; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2134 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2135 f = fopen ("/proc/cpuinfo", "r"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2136 if (f != NULL) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2137 while (fgets(line,sizeof(line),f)!=NULL) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2138 /* NOTE: the ':' is the only character we can rely on */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2139 if (!(value = strchr(line,':'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2140 continue; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2141 /* terminate the valuename */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2142 *value++ = '\0'; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2143 /* skip any leading spaces */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2144 while (*value==' ') value++; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2145 if ((s=strchr(value,'\n'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2146 *s='\0'; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2147 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2148 if (!strncasecmp(line, "cpu MHz",strlen("cpu MHz")) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2149 && sscanf(value, "%lf", &freq) == 1) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2150 freq*=1000; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2151 break; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2152 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2153 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2154 fclose(f); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2155 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2156 return freq; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2157 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2158 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2159 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2160 static double solaris_kstat_freq(void) |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2161 { |
1679
73c8f54305b1
Add a few ifdefs, so that the code compiles on old solaris releases (2.6 and 7)
jkeil
parents:
1543
diff
changeset
|
2162 #if defined(HAVE_LIBKSTAT) && defined(KSTAT_DATA_INT32) |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2163 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2164 * try to extract the CPU speed from the solaris kernel's kstat data |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2165 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2166 kstat_ctl_t *kc; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2167 kstat_t *ksp; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2168 kstat_named_t *kdata; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2169 int mhz = 0; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2170 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2171 kc = kstat_open(); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2172 if (kc != NULL) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2173 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2174 ksp = kstat_lookup(kc, "cpu_info", 0, "cpu_info0"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2175 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2176 /* kstat found and name/value pairs? */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2177 if (ksp != NULL && ksp->ks_type == KSTAT_TYPE_NAMED) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2178 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2179 /* read the kstat data from the kernel */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2180 if (kstat_read(kc, ksp, NULL) != -1) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2181 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2182 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2183 * lookup desired "clock_MHz" entry, check the expected |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2184 * data type |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2185 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2186 kdata = (kstat_named_t *)kstat_data_lookup(ksp, "clock_MHz"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2187 if (kdata != NULL && kdata->data_type == KSTAT_DATA_INT32) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2188 mhz = kdata->value.i32; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2189 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2190 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2191 kstat_close(kc); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2192 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2193 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2194 if (mhz > 0) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2195 return mhz * 1000.; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2196 #endif /* HAVE_LIBKSTAT */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2197 return -1; // kstat stuff is not available, CPU freq is unknown |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2198 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2199 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2200 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2201 * Measure CPU freq using the pentium's time stamp counter register (TSC) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2202 */ |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2203 static double tsc_freq(void) |
1 | 2204 { |
128 | 2205 static double ofreq=0.0; |
2206 int i; | |
1 | 2207 int x,y; |
128 | 2208 i=time(NULL); |
2209 if (ofreq != 0.0) return ofreq; | |
1 | 2210 while(i==time(NULL)); |
2211 x=localcount(); | |
2212 i++; | |
2213 while(i==time(NULL)); | |
2214 y=localcount(); | |
128 | 2215 ofreq = (double)(y-x)/1000.; |
2216 return ofreq; | |
1 | 2217 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2218 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2219 static double CPU_Freq(void) |
1 | 2220 { |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2221 double freq; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2222 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2223 if ((freq = linux_cpuinfo_freq()) > 0) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2224 return freq; |
1 | 2225 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2226 if ((freq = solaris_kstat_freq()) > 0) |
1 | 2227 return freq; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2228 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2229 return tsc_freq(); |
1 | 2230 } |
2231 | |
3465 | 2232 static long WINAPI expQueryPerformanceFrequency(long long* z) |
1 | 2233 { |
2234 *z=(long long)CPU_Freq(); | |
128 | 2235 dbgprintf("QueryPerformanceFrequency(0x%x) => 1 ( %Ld )\n", z, *z); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2236 return 1; |
1 | 2237 } |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2238 static long WINAPI exptimeGetTime(void) |
1 | 2239 { |
2240 struct timeval t; | |
128 | 2241 long result; |
1 | 2242 gettimeofday(&t, 0); |
128 | 2243 result=1000*t.tv_sec+t.tv_usec/1000; |
2244 dbgprintf("timeGetTime() => %d\n", result); | |
2245 return result; | |
1 | 2246 } |
3465 | 2247 static void* WINAPI expLocalHandle(void* v) |
1 | 2248 { |
128 | 2249 dbgprintf("LocalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2250 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2251 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2252 |
3465 | 2253 static void* WINAPI expGlobalHandle(void* v) |
1 | 2254 { |
128 | 2255 dbgprintf("GlobalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2256 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2257 } |
3465 | 2258 static int WINAPI expGlobalUnlock(void* v) |
1 | 2259 { |
128 | 2260 dbgprintf("GlobalUnlock(0x%x) => 1\n", v); |
1 | 2261 return 1; |
2262 } | |
3465 | 2263 static void* WINAPI expGlobalFree(void* v) |
1 | 2264 { |
128 | 2265 dbgprintf("GlobalFree(0x%x) => 0\n", v); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2266 my_release(v); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2267 //free(v); |
1 | 2268 return 0; |
128 | 2269 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2270 |
3465 | 2271 static void* WINAPI expGlobalReAlloc(void* v, int size, int flags) |
128 | 2272 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2273 void* result=my_realloc(v, size); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2274 //void* result=realloc(v, size); |
128 | 2275 dbgprintf("GlobalReAlloc(0x%x, size %d, flags 0x%x) => 0x%x\n", v,size,flags,result); |
2276 return result; | |
2277 } | |
1 | 2278 |
3465 | 2279 static int WINAPI expLocalUnlock(void* v) |
1 | 2280 { |
128 | 2281 dbgprintf("LocalUnlock(0x%x) => 1\n", v); |
1 | 2282 return 1; |
2283 } | |
3465 | 2284 // |
2285 static void* WINAPI expLocalFree(void* v) | |
1 | 2286 { |
128 | 2287 dbgprintf("LocalFree(0x%x) => 0\n", v); |
1 | 2288 my_release(v); |
2289 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2290 } |
3465 | 2291 static HRSRC WINAPI expFindResourceA(HMODULE module, char* name, char* type) |
1 | 2292 { |
3465 | 2293 HRSRC result; |
2294 | |
2295 result=FindResourceA(module, name, type); | |
4545 | 2296 dbgprintf("FindResourceA(module 0x%x, name 0x%x(%s), type 0x%x(%s)) => 0x%x\n", |
2297 module, name, HIWORD(name) ? name : "UNICODE", type, HIWORD(type) ? type : "UNICODE", result); | |
128 | 2298 return result; |
1 | 2299 } |
3465 | 2300 |
2301 static HGLOBAL WINAPI expLoadResource(HMODULE module, HRSRC res) | |
1 | 2302 { |
128 | 2303 HGLOBAL result=LoadResource(module, res); |
2304 dbgprintf("LoadResource(module 0x%x, resource 0x%x) => 0x%x\n", module, res, result); | |
2305 return result; | |
1 | 2306 } |
3465 | 2307 static void* WINAPI expLockResource(long res) |
1 | 2308 { |
128 | 2309 void* result=LockResource(res); |
2310 dbgprintf("LockResource(0x%x) => 0x%x\n", res, result); | |
2311 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2312 } |
3465 | 2313 static int WINAPI expFreeResource(long res) |
1 | 2314 { |
128 | 2315 int result=FreeResource(res); |
2316 dbgprintf("FreeResource(0x%x) => %d\n", res, result); | |
2317 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2318 } |
1 | 2319 //bool fun(HANDLE) |
2320 //!0 on success | |
3465 | 2321 static int WINAPI expCloseHandle(long v1) |
1 | 2322 { |
128 | 2323 dbgprintf("CloseHandle(0x%x) => 1\n", v1); |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2324 /* do not close stdin,stdout and stderr */ |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2325 if (v1 > 2) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2326 if (!close(v1)) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2327 return 0; |
1 | 2328 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2329 } |
1 | 2330 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2331 static const char* WINAPI expGetCommandLineA(void) |
1 | 2332 { |
128 | 2333 dbgprintf("GetCommandLineA() => \"c:\\aviplay.exe\"\n"); |
1 | 2334 return "c:\\aviplay.exe"; |
2335 } | |
128 | 2336 static short envs[]={'p', 'a', 't', 'h', ' ', 'c', ':', '\\', 0, 0}; |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2337 static LPWSTR WINAPI expGetEnvironmentStringsW(void) |
1 | 2338 { |
3465 | 2339 dbgprintf("GetEnvironmentStringsW() => 0\n", envs); |
2340 return 0; | |
1 | 2341 } |
3465 | 2342 static void * WINAPI expRtlZeroMemory(void *p, size_t len) |
121 | 2343 { |
2344 void* result=memset(p,0,len); | |
2345 dbgprintf("RtlZeroMemory(0x%x, len %d) => 0x%x\n",p,len,result); | |
2346 return result; | |
2347 } | |
3465 | 2348 static void * WINAPI expRtlMoveMemory(void *dst, void *src, size_t len) |
121 | 2349 { |
2350 void* result=memmove(dst,src,len); | |
2351 dbgprintf("RtlMoveMemory (dest 0x%x, src 0x%x, len %d) => 0x%x\n",dst,src,len,result); | |
2352 return result; | |
2353 } | |
2354 | |
3465 | 2355 static void * WINAPI expRtlFillMemory(void *p, int ch, size_t len) |
121 | 2356 { |
2357 void* result=memset(p,ch,len); | |
2358 dbgprintf("RtlFillMemory(0x%x, char 0x%x, len %d) => 0x%x\n",p,ch,len,result); | |
2359 return result; | |
2360 } | |
3465 | 2361 static int WINAPI expFreeEnvironmentStringsW(short* strings) |
1 | 2362 { |
128 | 2363 dbgprintf("FreeEnvironmentStringsW(0x%x) => 1\n", strings); |
1 | 2364 return 1; |
2365 } | |
3465 | 2366 static int WINAPI expFreeEnvironmentStringsA(char* strings) |
128 | 2367 { |
3465 | 2368 dbgprintf("FreeEnvironmentStringsA(0x%x) => 1\n", strings); |
2369 return 1; | |
128 | 2370 } |
3465 | 2371 |
128 | 2372 static const char ch_envs[]= |
3465 | 2373 "__MSVCRT_HEAP_SELECT=__GLOBAL_HEAP_SELECTED,1\r\n" |
2374 "PATH=C:\\;C:\\windows\\;C:\\windows\\system\r\n"; | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2375 static LPCSTR WINAPI expGetEnvironmentStrings(void) |
1 | 2376 { |
128 | 2377 dbgprintf("GetEnvironmentStrings() => 0x%x\n", ch_envs); |
2378 return (LPCSTR)ch_envs; | |
3465 | 2379 // dbgprintf("GetEnvironmentStrings() => 0\n"); |
2380 // return 0; | |
1 | 2381 } |
2382 | |
3465 | 2383 static int WINAPI expGetStartupInfoA(STARTUPINFOA *s) |
1 | 2384 { |
128 | 2385 dbgprintf("GetStartupInfoA(0x%x) => 1\n"); |
1 | 2386 memset(s, 0, sizeof(*s)); |
2387 s->cb=sizeof(*s); | |
3465 | 2388 // s->lpReserved="Reserved"; |
2389 // s->lpDesktop="Desktop"; | |
2390 // s->lpTitle="Title"; | |
2391 // s->dwX=s->dwY=0; | |
2392 // s->dwXSize=s->dwYSize=200; | |
2393 s->dwFlags=s->wShowWindow=1; | |
2394 // s->hStdInput=s->hStdOutput=s->hStdError=0x1234; | |
128 | 2395 dbgprintf(" cb=%d\n", s->cb); |
2396 dbgprintf(" lpReserved='%s'\n", s->lpReserved); | |
2397 dbgprintf(" lpDesktop='%s'\n", s->lpDesktop); | |
2398 dbgprintf(" lpTitle='%s'\n", s->lpTitle); | |
2399 dbgprintf(" dwX=%d dwY=%d dwXSize=%d dwYSize=%d\n", | |
3465 | 2400 s->dwX, s->dwY, s->dwXSize, s->dwYSize); |
128 | 2401 dbgprintf(" dwXCountChars=%d dwYCountChars=%d dwFillAttribute=%d\n", |
3465 | 2402 s->dwXCountChars, s->dwYCountChars, s->dwFillAttribute); |
128 | 2403 dbgprintf(" dwFlags=0x%x wShowWindow=0x%x cbReserved2=0x%x\n", |
3465 | 2404 s->dwFlags, s->wShowWindow, s->cbReserved2); |
128 | 2405 dbgprintf(" lpReserved2=0x%x hStdInput=0x%x hStdOutput=0x%x hStdError=0x%x\n", |
3465 | 2406 s->lpReserved2, s->hStdInput, s->hStdOutput, s->hStdError); |
1 | 2407 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2408 } |
1 | 2409 |
3465 | 2410 static int WINAPI expGetStdHandle(int z) |
1 | 2411 { |
3465 | 2412 dbgprintf("GetStdHandle(0x%x) => 0x%x\n", z+0x1234); |
2413 return z+0x1234; | |
1 | 2414 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2415 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2416 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2417 #define FILE_HANDLE_quicktimeqts ((HANDLE)0x444) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2418 #define FILE_HANDLE_quicktimeqtx ((HANDLE)0x445) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2419 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2420 |
3465 | 2421 static int WINAPI expGetFileType(int handle) |
1 | 2422 { |
3465 | 2423 dbgprintf("GetFileType(0x%x) => 0x3 = pipe\n", handle); |
2424 return 0x3; | |
1 | 2425 } |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2426 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2427 static int WINAPI expGetFileAttributesA(char *filename) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2428 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2429 dbgprintf("GetFileAttributesA(%s) => FILE_ATTR_NORMAL\n", filename); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2430 if (strstr(filename, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2431 return FILE_ATTRIBUTE_SYSTEM; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2432 return FILE_ATTRIBUTE_NORMAL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2433 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2434 #endif |
3465 | 2435 static int WINAPI expSetHandleCount(int count) |
1 | 2436 { |
128 | 2437 dbgprintf("SetHandleCount(0x%x) => 1\n", count); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2438 return 1; |
1 | 2439 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2440 static int WINAPI expGetACP(void) |
1 | 2441 { |
128 | 2442 dbgprintf("GetACP() => 0\n"); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2443 return 0; |
1 | 2444 } |
3465 | 2445 static int WINAPI expGetModuleFileNameA(int module, char* s, int len) |
1 | 2446 { |
2447 WINE_MODREF *mr; | |
128 | 2448 int result; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2449 //printf("File name of module %X (%s) requested\n", module, s); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2450 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2451 if (module == 0 && len >= 12) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2452 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2453 /* return caller program name */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2454 strcpy(s, "aviplay.dll"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2455 result=1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2456 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2457 else if(s==0) |
128 | 2458 result=0; |
2459 else | |
3465 | 2460 if(len<35) |
2461 result=0; | |
128 | 2462 else |
3465 | 2463 { |
2464 result=1; | |
2465 strcpy(s, "c:\\windows\\system\\"); | |
2466 mr=MODULE32_LookupHMODULE(module); | |
2467 if(mr==0)//oops | |
2468 strcat(s, "aviplay.dll"); | |
2469 else | |
2470 if(strrchr(mr->filename, '/')==NULL) | |
2471 strcat(s, mr->filename); | |
2472 else | |
2473 strcat(s, strrchr(mr->filename, '/')+1); | |
2474 } | |
128 | 2475 if(!s) |
3465 | 2476 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d\n", |
2477 module, s, len, result); | |
1 | 2478 else |
3465 | 2479 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d ( '%s' )\n", |
2480 module, s, len, result, s); | |
128 | 2481 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2482 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2483 |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2484 static int WINAPI expGetModuleBaseNameA(int process, int module, char* s, int len) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2485 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2486 int result = 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2487 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2488 if (s && len) { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2489 av_strlcpy(s, "aviplay.dll", len); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2490 result = strlen(s); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2491 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2492 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2493 dbgprintf("GetModuleBaseNameA(0x%x, 0x%x, 0x%x, %d) => %d\n", |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2494 process, module, s, len, result); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2495 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2496 return result; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2497 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2498 |
3465 | 2499 static int WINAPI expSetUnhandledExceptionFilter(void* filter) |
1 | 2500 { |
128 | 2501 dbgprintf("SetUnhandledExceptionFilter(0x%x) => 1\n", filter); |
1 | 2502 return 1;//unsupported and probably won't ever be supported |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2503 } |
2069 | 2504 |
3465 | 2505 static int WINAPI expLoadLibraryA(char* name) |
1 | 2506 { |
2069 | 2507 int result = 0; |
713 | 2508 char* lastbc; |
2509 if (!name) | |
2510 return -1; | |
2511 // we skip to the last backslash | |
2512 // this is effectively eliminating weird characters in | |
2513 // the text output windows | |
2069 | 2514 |
713 | 2515 lastbc = strrchr(name, '\\'); |
2516 if (lastbc) | |
2517 { | |
3465 | 2518 int i; |
2519 lastbc++; | |
713 | 2520 for (i = 0; 1 ;i++) |
2521 { | |
2522 name[i] = *lastbc++; | |
2523 if (!name[i]) | |
2524 break; | |
2525 } | |
2526 } | |
2069 | 2527 if(strncmp(name, "c:\\windows\\", 11)==0) name += 11; |
1416 | 2528 if(strncmp(name, ".\\", 2)==0) name += 2; |
2069 | 2529 |
2530 dbgprintf("Entering LoadLibraryA(%s)\n", name); | |
3465 | 2531 |
3440 | 2532 // PIMJ and VIVO audio are loading kernel32.dll |
2533 if (strcasecmp(name, "kernel32.dll") == 0 || strcasecmp(name, "kernel32") == 0) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2534 return MODULE_HANDLE_kernel32; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2535 // return ERROR_SUCCESS; /* yeah, we have also the kernel32 calls */ |
3457 | 2536 /* exported -> do not return failed! */ |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2537 |
5234 | 2538 if (strcasecmp(name, "user32.dll") == 0 || strcasecmp(name, "user32") == 0) |
2539 // return MODULE_HANDLE_kernel32; | |
2540 return MODULE_HANDLE_user32; | |
2541 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2542 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2543 if (strcasecmp(name, "wininet.dll") == 0 || strcasecmp(name, "wininet") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2544 return MODULE_HANDLE_wininet; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2545 if (strcasecmp(name, "ddraw.dll") == 0 || strcasecmp(name, "ddraw") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2546 return MODULE_HANDLE_ddraw; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2547 if (strcasecmp(name, "advapi32.dll") == 0 || strcasecmp(name, "advapi32") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2548 return MODULE_HANDLE_advapi32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2549 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2550 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2551 if (strcasecmp(name, "comdlg32.dll") == 0 || strcasecmp(name, "comdlg32") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2552 return MODULE_HANDLE_comdlg32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2553 if (strcasecmp(name, "msvcrt.dll") == 0 || strcasecmp(name, "msvcrt") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2554 return MODULE_HANDLE_msvcrt; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2555 if (strcasecmp(name, "ole32.dll") == 0 || strcasecmp(name, "ole32") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2556 return MODULE_HANDLE_ole32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2557 if (strcasecmp(name, "winmm.dll") == 0 || strcasecmp(name, "winmm") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2558 return MODULE_HANDLE_winmm; |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2559 if (strcasecmp(name, "psapi.dll") == 0 || strcasecmp(name, "psapi") == 0) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2560 return MODULE_HANDLE_psapi; |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2561 |
2069 | 2562 result=LoadLibraryA(name); |
30907
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
2563 dbgprintf("Returned LoadLibraryA(0x%x='%s'), codec_path=%s => 0x%x\n", |
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
2564 name, name, codec_path, result); |
2069 | 2565 |
128 | 2566 return result; |
2069 | 2567 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2568 |
3465 | 2569 static int WINAPI expFreeLibrary(int module) |
1 | 2570 { |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2571 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2572 int result=0; /* FIXME:XXX: qtx svq3 frees up qt.qts */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2573 #else |
128 | 2574 int result=FreeLibrary(module); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2575 #endif |
128 | 2576 dbgprintf("FreeLibrary(0x%x) => %d\n", module, result); |
2577 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2578 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2579 |
3465 | 2580 static void* WINAPI expGetProcAddress(HMODULE mod, char* name) |
1 | 2581 { |
2069 | 2582 void* result; |
5234 | 2583 switch(mod){ |
2584 case MODULE_HANDLE_kernel32: | |
2585 result=LookupExternalByName("kernel32.dll", name); break; | |
2586 case MODULE_HANDLE_user32: | |
2587 result=LookupExternalByName("user32.dll", name); break; | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2588 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2589 case MODULE_HANDLE_wininet: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2590 result=LookupExternalByName("wininet.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2591 case MODULE_HANDLE_ddraw: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2592 result=LookupExternalByName("ddraw.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2593 case MODULE_HANDLE_advapi32: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2594 result=LookupExternalByName("advapi32.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2595 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2596 case MODULE_HANDLE_comdlg32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2597 result=LookupExternalByName("comdlg32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2598 case MODULE_HANDLE_msvcrt: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2599 result=LookupExternalByName("msvcrt.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2600 case MODULE_HANDLE_ole32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2601 result=LookupExternalByName("ole32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2602 case MODULE_HANDLE_winmm: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2603 result=LookupExternalByName("winmm.dll", name); break; |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2604 case MODULE_HANDLE_psapi: |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2605 result=LookupExternalByName("psapi.dll", name); break; |
5234 | 2606 default: |
128 | 2607 result=GetProcAddress(mod, name); |
5234 | 2608 } |
22476 | 2609 if((unsigned int)name > 0xffff) |
2610 dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result); | |
2611 else | |
2612 dbgprintf("GetProcAddress(0x%x, '%d') => 0x%x\n", mod, (int)name, result); | |
128 | 2613 return result; |
2069 | 2614 } |
1 | 2615 |
3465 | 2616 static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr, |
2617 long flProtect, long dwMaxHigh, | |
2618 long dwMaxLow, const char* name) | |
1 | 2619 { |
128 | 2620 long result=CreateFileMappingA(hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name); |
2621 if(!name) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2622 dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2623 "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0) => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2624 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, result); |
128 | 2625 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2626 dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2627 "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0x%x='%s') => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2628 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name, name, result); |
128 | 2629 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2630 } |
1 | 2631 |
3465 | 2632 static long WINAPI expOpenFileMappingA(long hFile, long hz, const char* name) |
1 | 2633 { |
128 | 2634 long result=OpenFileMappingA(hFile, hz, name); |
2635 if(!name) | |
2636 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0) => %d\n", | |
3465 | 2637 hFile, hz, result); |
128 | 2638 else |
2639 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0x%x='%s') => %d\n", | |
3465 | 2640 hFile, hz, name, name, result); |
128 | 2641 return result; |
1 | 2642 } |
2643 | |
3465 | 2644 static void* WINAPI expMapViewOfFile(HANDLE file, DWORD mode, DWORD offHigh, |
2645 DWORD offLow, DWORD size) | |
1 | 2646 { |
128 | 2647 dbgprintf("MapViewOfFile(0x%x, 0x%x, 0x%x, 0x%x, size %d) => 0x%x\n", |
3465 | 2648 file,mode,offHigh,offLow,size,(char*)file+offLow); |
1 | 2649 return (char*)file+offLow; |
2650 } | |
2651 | |
3465 | 2652 static void* WINAPI expUnmapViewOfFile(void* view) |
1 | 2653 { |
128 | 2654 dbgprintf("UnmapViewOfFile(0x%x) => 0\n", view); |
1 | 2655 return 0; |
2656 } | |
2657 | |
3465 | 2658 static void* WINAPI expSleep(int time) |
2659 { | |
2660 #if HAVE_NANOSLEEP | |
2661 /* solaris doesn't have thread safe usleep */ | |
2662 struct timespec tsp; | |
2663 tsp.tv_sec = time / 1000000; | |
2664 tsp.tv_nsec = (time % 1000000) * 1000; | |
2665 nanosleep(&tsp, NULL); | |
2666 #else | |
2667 usleep(time); | |
2668 #endif | |
2669 dbgprintf("Sleep(%d) => 0\n", time); | |
2670 return 0; | |
2671 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2672 |
3465 | 2673 // why does IV32 codec want to call this? I don't know ... |
2674 static int WINAPI expCreateCompatibleDC(int hdc) | |
1 | 2675 { |
3465 | 2676 int dc = 0;//0x81; |
2677 //dbgprintf("CreateCompatibleDC(%d) => 0x81\n", hdc); | |
2678 dbgprintf("CreateCompatibleDC(%d) => %d\n", hdc, dc); | |
2679 return dc; | |
2680 } | |
2681 | |
2682 static int WINAPI expGetDeviceCaps(int hdc, int unk) | |
2683 { | |
2684 dbgprintf("GetDeviceCaps(0x%x, %d) => 0\n", hdc, unk); | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2685 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2686 #define BITSPIXEL 12 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2687 #define PLANES 14 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2688 if (unk == BITSPIXEL) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2689 return 24; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2690 if (unk == PLANES) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2691 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2692 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2693 return 1; |
3465 | 2694 } |
2695 | |
2696 static WIN_BOOL WINAPI expDeleteDC(int hdc) | |
2697 { | |
2698 dbgprintf("DeleteDC(0x%x) => 0\n", hdc); | |
2699 if (hdc == 0x81) | |
2700 return 1; | |
1 | 2701 return 0; |
2702 } | |
3465 | 2703 |
2704 static WIN_BOOL WINAPI expDeleteObject(int hdc) | |
1 | 2705 { |
3465 | 2706 dbgprintf("DeleteObject(0x%x) => 1\n", hdc); |
2707 /* FIXME - implement code here */ | |
2708 return 1; | |
1 | 2709 } |
2710 | |
3465 | 2711 /* btvvc32.drv wants this one */ |
2712 static void* WINAPI expGetWindowDC(int hdc) | |
1 | 2713 { |
3465 | 2714 dbgprintf("GetWindowDC(%d) => 0x0\n", hdc); |
3128 | 2715 return 0; |
2716 } | |
2717 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2718 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2719 static int WINAPI expGetWindowRect(HWND win, RECT *r) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2720 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2721 dbgprintf("GetWindowRect(0x%x, 0x%x) => 1\n", win, r); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2722 /* (win == 0) => desktop */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2723 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2724 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2725 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2726 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2727 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2728 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2729 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2730 static int WINAPI expMonitorFromWindow(HWND win, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2731 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2732 dbgprintf("MonitorFromWindow(0x%x, 0x%x) => 0\n", win, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2733 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2734 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2735 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2736 static int WINAPI expMonitorFromRect(RECT *r, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2737 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2738 dbgprintf("MonitorFromRect(0x%x, 0x%x) => 0\n", r, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2739 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2740 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2741 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2742 static int WINAPI expMonitorFromPoint(void *p, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2743 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2744 dbgprintf("MonitorFromPoint(0x%x, 0x%x) => 0\n", p, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2745 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2746 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2747 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2748 static int WINAPI expEnumDisplayMonitors(void *dc, RECT *r, |
31821 | 2749 int WINAPI (*callback_proc)(HMONITOR, HDC, LPRECT, LPARAM), void *callback_param) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2750 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2751 dbgprintf("EnumDisplayMonitors(0x%x, 0x%x, 0x%x, 0x%x) => ?\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2752 dc, r, callback_proc, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2753 return callback_proc(0, dc, r, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2754 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2755 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2756 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2757 typedef struct tagMONITORINFO { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2758 DWORD cbSize; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2759 RECT rcMonitor; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2760 RECT rcWork; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2761 DWORD dwFlags; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2762 } MONITORINFO, *LPMONITORINFO; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2763 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2764 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2765 #define CCHDEVICENAME 8 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2766 typedef struct tagMONITORINFOEX { |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2767 DWORD cbSize; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2768 RECT rcMonitor; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2769 RECT rcWork; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2770 DWORD dwFlags; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2771 TCHAR szDevice[CCHDEVICENAME]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2772 } MONITORINFOEX, *LPMONITORINFOEX; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2773 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2774 static int WINAPI expGetMonitorInfoA(void *mon, LPMONITORINFO lpmi) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2775 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2776 dbgprintf("GetMonitorInfoA(0x%x, 0x%x) => 1\n", mon, lpmi); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2777 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2778 lpmi->rcMonitor.right = lpmi->rcWork.right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2779 lpmi->rcMonitor.left = lpmi->rcWork.left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2780 lpmi->rcMonitor.bottom = lpmi->rcWork.bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2781 lpmi->rcMonitor.top = lpmi->rcWork.top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2782 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2783 lpmi->dwFlags = 1; /* primary monitor */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2784 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2785 if (lpmi->cbSize == sizeof(MONITORINFOEX)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2786 { |
8451 | 2787 LPMONITORINFOEX lpmiex = (LPMONITORINFOEX)lpmi; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2788 dbgprintf("MONITORINFOEX!\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2789 strncpy(lpmiex->szDevice, "Monitor1", CCHDEVICENAME); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2790 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2791 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2792 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2793 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2794 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2795 static int WINAPI expEnumDisplayDevicesA(const char *device, int devnum, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2796 void *dispdev, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2797 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2798 dbgprintf("EnumDisplayDevicesA(0x%x = %s, %d, 0x%x, %x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2799 device, device, devnum, dispdev, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2800 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2801 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2802 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2803 static int WINAPI expIsWindowVisible(HWND win) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2804 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2805 dbgprintf("IsWindowVisible(0x%x) => 1\n", win); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2806 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2807 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2808 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2809 static HWND WINAPI expGetActiveWindow(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2810 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2811 dbgprintf("GetActiveWindow() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2812 return (HWND)0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2813 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2814 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2815 static int WINAPI expGetClassNameA(HWND win, LPTSTR classname, int maxcount) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2816 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2817 strncat(classname, "QuickTime", maxcount); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2818 dbgprintf("GetClassNameA(0x%x, 0x%x, %d) => %d\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2819 win, classname, maxcount, strlen(classname)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2820 return strlen(classname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2821 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2822 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2823 #define LPWNDCLASS void * |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2824 static int WINAPI expGetClassInfoA(HINSTANCE inst, LPCSTR classname, LPWNDCLASS wndclass) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2825 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2826 dbgprintf("GetClassInfoA(0x%x, 0x%x = %s, 0x%x) => 1\n", inst, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2827 classname, classname, wndclass); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2828 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2829 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2830 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2831 static int WINAPI expGetWindowLongA(HWND win, int index) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2832 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2833 dbgprintf("GetWindowLongA(0x%x, %d) => 0\n", win, index); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2834 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2835 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2836 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2837 static int WINAPI expGetObjectA(HGDIOBJ hobj, int objsize, LPVOID obj) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2838 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2839 dbgprintf("GetObjectA(0x%x, %d, 0x%x) => %d\n", hobj, objsize, obj, objsize); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2840 return objsize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2841 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2842 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2843 static int WINAPI expCreateRectRgn(int x, int y, int width, int height) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2844 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2845 dbgprintf("CreateRectRgn(%d, %d, %d, %d) => 0\n", x, y, width, height); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2846 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2847 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2848 |
31821 | 2849 static int WINAPI expEnumWindows(int (*callback_func)(HWND, LPARAM), void *callback_param) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2850 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2851 int i, i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2852 dbgprintf("EnumWindows(0x%x, 0x%x) => 1\n", callback_func, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2853 i = callback_func(0, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2854 i2 = callback_func(1, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2855 return i && i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2856 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2857 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2858 static int WINAPI expGetWindowThreadProcessId(HWND win, int *pid_data) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2859 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2860 int tid = pthread_self(); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2861 dbgprintf("GetWindowThreadProcessId(0x%x, 0x%x) => %d\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2862 win, pid_data, tid); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2863 if (pid_data) |
12374 | 2864 *(int*)pid_data = tid; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2865 return tid; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2866 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2867 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2868 //HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,INT,INT, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2869 // INT,INT,HWND,HMENU,HINSTANCE,LPVOID); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2870 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2871 static HWND WINAPI expCreateWindowExA(int exstyle, const char *classname, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2872 const char *winname, int style, int x, int y, int w, int h, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2873 HWND parent, HMENU menu, HINSTANCE inst, LPVOID param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2874 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2875 printf("CreateWindowEx() called\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2876 dbgprintf("CreateWindowEx(%d, 0x%x = %s, 0x%x = %s, %d, %d, %d, %d, %d, 0x%x, 0x%x, 0x%x, 0x%x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2877 exstyle, classname, classname, winname, winname, style, x, y, w, h, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2878 parent, menu, inst, param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2879 printf("CreateWindowEx() called okey\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2880 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2881 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2882 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2883 static int WINAPI expwaveOutGetNumDevs(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2884 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2885 dbgprintf("waveOutGetNumDevs() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2886 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2887 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2888 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2889 |
3465 | 2890 /* |
2891 * Returns the number of milliseconds, modulo 2^32, since the start | |
2892 * of the wineserver. | |
2893 */ | |
2894 static int WINAPI expGetTickCount(void) | |
1 | 2895 { |
3465 | 2896 static int tcstart = 0; |
2897 struct timeval t; | |
2898 int tc; | |
2899 gettimeofday( &t, NULL ); | |
2900 tc = ((t.tv_sec * 1000) + (t.tv_usec / 1000)) - tcstart; | |
2901 if (tcstart == 0) | |
2902 { | |
2903 tcstart = 0; | |
2904 tc = 0; | |
2905 } | |
2906 dbgprintf("GetTickCount() => %d\n", tc); | |
2907 return tc; | |
1 | 2908 } |
2909 | |
3465 | 2910 static int WINAPI expCreateFontA(void) |
2911 { | |
2912 dbgprintf("CreateFontA() => 0x0\n"); | |
2913 return 1; | |
2914 } | |
2915 | |
2916 /* tried to get pvmjpg work in a different way - no success */ | |
2917 static int WINAPI expDrawTextA(int hDC, char* lpString, int nCount, | |
2918 LPRECT lpRect, unsigned int uFormat) | |
2919 { | |
2920 dbgprintf("expDrawTextA(%p,...) => 8\n", hDC); | |
2921 return 8; | |
2922 } | |
2923 | |
2924 static int WINAPI expGetPrivateProfileIntA(const char* appname, | |
2925 const char* keyname, | |
2926 int default_value, | |
2927 const char* filename) | |
1 | 2928 { |
2929 int size=255; | |
2930 char buffer[256]; | |
2931 char* fullname; | |
2932 int result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2933 |
1 | 2934 buffer[255]=0; |
128 | 2935 if(!(appname && keyname && filename) ) |
2936 { | |
3465 | 2937 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, default_value ); |
128 | 2938 return default_value; |
2939 } | |
18878 | 2940 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 2941 strcpy(fullname, "Software\\IniFileMapping\\"); |
2942 strcat(fullname, appname); | |
2943 strcat(fullname, "\\"); | |
2944 strcat(fullname, keyname); | |
2945 strcat(fullname, "\\"); | |
2946 strcat(fullname, filename); | |
2947 result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)buffer, &size); | |
2948 if((size>=0)&&(size<256)) | |
2949 buffer[size]=0; | |
3465 | 2950 // printf("GetPrivateProfileIntA(%s, %s, %s) -> %s\n", appname, keyname, filename, buffer); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2951 free(fullname); |
1 | 2952 if(result) |
128 | 2953 result=default_value; |
1 | 2954 else |
128 | 2955 result=atoi(buffer); |
2956 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, result); | |
2957 return result; | |
1 | 2958 } |
3465 | 2959 static int WINAPI expGetProfileIntA(const char* appname, |
2960 const char* keyname, | |
2961 int default_value) | |
128 | 2962 { |
2963 dbgprintf("GetProfileIntA -> "); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2964 return expGetPrivateProfileIntA(appname, keyname, default_value, "default"); |
128 | 2965 } |
2966 | |
3465 | 2967 static int WINAPI expGetPrivateProfileStringA(const char* appname, |
2968 const char* keyname, | |
2969 const char* def_val, | |
2970 char* dest, unsigned int len, | |
2971 const char* filename) | |
1 | 2972 { |
2973 int result; | |
2974 int size; | |
2975 char* fullname; | |
128 | 2976 dbgprintf("GetPrivateProfileStringA('%s', '%s', def_val '%s', 0x%x, 0x%x, '%s')", appname, keyname, def_val, dest, len, filename ); |
1 | 2977 if(!(appname && keyname && filename) ) return 0; |
18878 | 2978 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 2979 strcpy(fullname, "Software\\IniFileMapping\\"); |
2980 strcat(fullname, appname); | |
2981 strcat(fullname, "\\"); | |
2982 strcat(fullname, keyname); | |
2983 strcat(fullname, "\\"); | |
2984 strcat(fullname, filename); | |
2985 size=len; | |
2986 result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)dest, &size); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2987 free(fullname); |
128 | 2988 if(result) |
2989 { | |
2990 strncpy(dest, def_val, size); | |
2991 if (strlen(def_val)< size) size = strlen(def_val); | |
2992 } | |
2993 dbgprintf(" => %d ( '%s' )\n", size, dest); | |
1 | 2994 return size; |
2995 } | |
3465 | 2996 static int WINAPI expWritePrivateProfileStringA(const char* appname, |
2997 const char* keyname, | |
2998 const char* string, | |
2999 const char* filename) | |
1 | 3000 { |
3001 char* fullname; | |
128 | 3002 dbgprintf("WritePrivateProfileStringA('%s', '%s', '%s', '%s')", appname, keyname, string, filename ); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3003 if(!(appname && keyname && filename) ) |
128 | 3004 { |
3005 dbgprintf(" => -1\n"); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3006 return -1; |
128 | 3007 } |
18878 | 3008 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 3009 strcpy(fullname, "Software\\IniFileMapping\\"); |
3010 strcat(fullname, appname); | |
3011 strcat(fullname, "\\"); | |
3012 strcat(fullname, keyname); | |
3013 strcat(fullname, "\\"); | |
3014 strcat(fullname, filename); | |
3015 RegSetValueExA(HKEY_LOCAL_MACHINE, fullname, 0, REG_SZ, (int*)string, strlen(string)); | |
3465 | 3016 // printf("RegSetValueExA(%s,%d)\n", string, strlen(string)); |
3017 // printf("WritePrivateProfileStringA(%s, %s, %s, %s)\n", appname, keyname, string, filename ); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3018 free(fullname); |
128 | 3019 dbgprintf(" => 0\n"); |
1 | 3020 return 0; |
3021 } | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3022 |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3023 unsigned int GetPrivateProfileIntA_(const char* appname, const char* keyname, INT default_value, const char* filename) |
1 | 3024 { |
3025 return expGetPrivateProfileIntA(appname, keyname, default_value, filename); | |
3026 } | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3027 int GetPrivateProfileStringA_(const char* appname, const char* keyname, |
3465 | 3028 const char* def_val, char* dest, unsigned int len, const char* filename) |
1 | 3029 { |
3030 return expGetPrivateProfileStringA(appname, keyname, def_val, dest, len, filename); | |
3031 } | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3032 int WritePrivateProfileStringA_(const char* appname, const char* keyname, |
3465 | 3033 const char* string, const char* filename) |
1 | 3034 { |
3035 return expWritePrivateProfileStringA(appname, keyname, string, filename); | |
3036 } | |
3037 | |
3038 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3039 |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3040 static int WINAPI expDefDriverProc(int private, int id, int msg, int arg1, int arg2) |
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3041 { |
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3042 dbgprintf("DefDriverProc(0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0\n", private, id, msg, arg1, arg2); |
1 | 3043 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3044 } |
1 | 3045 |
3465 | 3046 static int WINAPI expSizeofResource(int v1, int v2) |
1 | 3047 { |
128 | 3048 int result=SizeofResource(v1, v2); |
3049 dbgprintf("SizeofResource(0x%x, 0x%x) => %d\n", v1, v2, result); | |
3050 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3051 } |
1 | 3052 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
3053 static int WINAPI expGetLastError(void) |
1 | 3054 { |
128 | 3055 int result=GetLastError(); |
3056 dbgprintf("GetLastError() => 0x%x\n", result); | |
3057 return result; | |
1 | 3058 } |
3059 | |
3465 | 3060 static void WINAPI expSetLastError(int error) |
1 | 3061 { |
128 | 3062 dbgprintf("SetLastError(0x%x)\n", error); |
1 | 3063 SetLastError(error); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3064 } |
1 | 3065 |
3465 | 3066 static int WINAPI expStringFromGUID2(GUID* guid, char* str, int cbMax) |
128 | 3067 { |
2069 | 3068 int result=snprintf(str, cbMax, "%.8x-%.4x-%.4x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", |
3069 guid->f1, guid->f2, guid->f3, | |
3070 (unsigned char)guid->f4[0], (unsigned char)guid->f4[1], | |
3071 (unsigned char)guid->f4[2], (unsigned char)guid->f4[3], | |
3072 (unsigned char)guid->f4[4], (unsigned char)guid->f4[5], | |
3073 (unsigned char)guid->f4[6], (unsigned char)guid->f4[7]); | |
128 | 3074 dbgprintf("StringFromGUID2(0x%x, 0x%x='%s', %d) => %d\n", guid, str, str, cbMax, result); |
3075 return result; | |
3076 } | |
3077 | |
1 | 3078 |
3465 | 3079 static int WINAPI expGetFileVersionInfoSizeA(const char* name, int* lpHandle) |
1 | 3080 { |
128 | 3081 dbgprintf("GetFileVersionInfoSizeA(0x%x='%s', 0x%X) => 0\n", name, name, lpHandle); |
1 | 3082 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3083 } |
1 | 3084 |
3465 | 3085 static int WINAPI expIsBadStringPtrW(const short* string, int nchars) |
1 | 3086 { |
128 | 3087 int result; |
3088 if(string==0)result=1; else result=0; | |
3089 dbgprintf("IsBadStringPtrW(0x%x, %d) => %d", string, nchars, result); | |
3090 if(string)wch_print(string); | |
3091 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3092 } |
3465 | 3093 static int WINAPI expIsBadStringPtrA(const char* string, int nchars) |
3128 | 3094 { |
3095 return expIsBadStringPtrW((const short*)string, nchars); | |
3096 } | |
3465 | 3097 static long WINAPI expInterlockedExchangeAdd( long* dest, long incr ) |
1 | 3098 { |
3099 long ret; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
3100 __asm__ volatile |
3465 | 3101 ( |
3102 "lock; xaddl %0,(%1)" | |
3103 : "=r" (ret) | |
3104 : "r" (dest), "0" (incr) | |
3105 : "memory" | |
3106 ); | |
1 | 3107 return ret; |
3108 } | |
3109 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3110 static long WINAPI expInterlockedCompareExchange( unsigned long* dest, unsigned long exchange, unsigned long comperand) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3111 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3112 unsigned long retval = *dest; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3113 if(*dest == comperand) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3114 *dest = exchange; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3115 return retval; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3116 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3117 |
3465 | 3118 static long WINAPI expInterlockedIncrement( long* dest ) |
1 | 3119 { |
3465 | 3120 long result=expInterlockedExchangeAdd( dest, 1 ) + 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3121 dbgprintf("InterlockedIncrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 3122 return result; |
1 | 3123 } |
3465 | 3124 static long WINAPI expInterlockedDecrement( long* dest ) |
1 | 3125 { |
3465 | 3126 long result=expInterlockedExchangeAdd( dest, -1 ) - 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3127 dbgprintf("InterlockedDecrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 3128 return result; |
1 | 3129 } |
3130 | |
3465 | 3131 static void WINAPI expOutputDebugStringA( const char* string ) |
1 | 3132 { |
128 | 3133 dbgprintf("OutputDebugStringA(0x%x='%s')\n", string); |
1 | 3134 fprintf(stderr, "DEBUG: %s\n", string); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3135 } |
1 | 3136 |
3465 | 3137 static int WINAPI expGetDC(int hwnd) |
1 | 3138 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3139 dbgprintf("GetDC(0x%x) => 1\n", hwnd); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3140 return 1; |
1 | 3141 } |
3142 | |
3465 | 3143 static int WINAPI expReleaseDC(int hwnd, int hdc) |
1 | 3144 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3145 dbgprintf("ReleaseDC(0x%x, 0x%x) => 1\n", hwnd, hdc); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3146 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3147 } |
3465 | 3148 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
3149 static int WINAPI expGetDesktopWindow(void) |
128 | 3150 { |
3465 | 3151 dbgprintf("GetDesktopWindow() => 0\n"); |
3152 return 0; | |
128 | 3153 } |
3465 | 3154 |
3155 static int cursor[100]; | |
3156 | |
3157 static int WINAPI expLoadCursorA(int handle,LPCSTR name) | |
3158 { | |
3159 dbgprintf("LoadCursorA(%d, 0x%x='%s') => 0x%x\n", handle, name, (int)&cursor[0]); | |
3160 return (int)&cursor[0]; | |
3161 } | |
3162 static int WINAPI expSetCursor(void *cursor) | |
128 | 3163 { |
3164 dbgprintf("SetCursor(0x%x) => 0x%x\n", cursor, cursor); | |
3165 return (int)cursor; | |
3166 } | |
3465 | 3167 static int WINAPI expGetCursorPos(void *cursor) |
2069 | 3168 { |
3169 dbgprintf("GetCursorPos(0x%x) => 0x%x\n", cursor, cursor); | |
3170 return 1; | |
3171 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3172 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3173 static int show_cursor = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3174 static int WINAPI expShowCursor(int show) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3175 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3176 dbgprintf("ShowCursor(%d) => %d\n", show, show); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3177 if (show) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3178 show_cursor++; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3179 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3180 show_cursor--; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3181 return show_cursor; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3182 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3183 #endif |
3465 | 3184 static int WINAPI expRegisterWindowMessageA(char *message) |
2069 | 3185 { |
3186 dbgprintf("RegisterWindowMessageA(%s)\n", message); | |
3187 return 1; | |
3188 } | |
3465 | 3189 static int WINAPI expGetProcessVersion(int pid) |
2069 | 3190 { |
3191 dbgprintf("GetProcessVersion(%d)\n", pid); | |
3192 return 1; | |
3193 } | |
3465 | 3194 static int WINAPI expGetCurrentThread(void) |
2069 | 3195 { |
32394
914208d188b9
Remove #warning preprocessor directives or replace them by suitable comments.
diego
parents:
32352
diff
changeset
|
3196 /* FIXME! */ |
3457 | 3197 dbgprintf("GetCurrentThread() => %x\n", 0xcfcf9898); |
2779 | 3198 return 0xcfcf9898; |
2069 | 3199 } |
3465 | 3200 static int WINAPI expGetOEMCP(void) |
2069 | 3201 { |
3202 dbgprintf("GetOEMCP()\n"); | |
3203 return 1; | |
3204 } | |
3465 | 3205 static int WINAPI expGetCPInfo(int cp,void *info) |
2069 | 3206 { |
3207 dbgprintf("GetCPInfo()\n"); | |
3208 return 0; | |
3209 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3210 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3211 #define SM_CXSCREEN 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3212 #define SM_CYSCREEN 1 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3213 #define SM_XVIRTUALSCREEN 76 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3214 #define SM_YVIRTUALSCREEN 77 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3215 #define SM_CXVIRTUALSCREEN 78 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3216 #define SM_CYVIRTUALSCREEN 79 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3217 #define SM_CMONITORS 80 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3218 #endif |
3465 | 3219 static int WINAPI expGetSystemMetrics(int index) |
2069 | 3220 { |
3221 dbgprintf("GetSystemMetrics(%d)\n", index); | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3222 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3223 switch(index) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3224 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3225 case SM_XVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3226 case SM_YVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3227 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3228 case SM_CXSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3229 case SM_CXVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3230 return PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3231 case SM_CYSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3232 case SM_CYVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3233 return PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3234 case SM_CMONITORS: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3235 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3236 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3237 #endif |
2069 | 3238 return 1; |
3239 } | |
3465 | 3240 static int WINAPI expGetSysColor(int index) |
2069 | 3241 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3242 dbgprintf("GetSysColor(%d) => 1\n", index); |
2069 | 3243 return 1; |
3244 } | |
3465 | 3245 static int WINAPI expGetSysColorBrush(int index) |
2069 | 3246 { |
3247 dbgprintf("GetSysColorBrush(%d)\n", index); | |
3248 return 1; | |
3249 } | |
3250 | |
3251 | |
3252 | |
3465 | 3253 static int WINAPI expGetSystemPaletteEntries(int hdc, int iStartIndex, int nEntries, void* lppe) |
128 | 3254 { |
3255 dbgprintf("GetSystemPaletteEntries(0x%x, 0x%x, 0x%x, 0x%x) => 0\n", | |
3465 | 3256 hdc, iStartIndex, nEntries, lppe); |
1 | 3257 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3258 } |
1 | 3259 |
3260 /* | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3261 typedef struct TIME_ZONE_INFORMATION { |
3465 | 3262 long Bias; |
3263 char StandardName[32]; | |
3264 SYSTEMTIME StandardDate; | |
3265 long StandardBias; | |
3266 char DaylightName[32]; | |
3267 SYSTEMTIME DaylightDate; | |
3268 long DaylightBias; | |
3269 } TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; | |
3270 */ | |
3271 | |
3272 static int WINAPI expGetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation) | |
1 | 3273 { |
128 | 3274 const short name[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'S', 't', 'a', |
3275 'n', 'd', 'a', 'r', 'd', ' ', 'T', 'i', 'm', 'e', 0}; | |
3276 const short pname[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'D', 'a', 'y', | |
3277 'l', 'i', 'g', 'h', 't', ' ', 'T', 'i', 'm', 'e', 0}; | |
3278 dbgprintf("GetTimeZoneInformation(0x%x) => TIME_ZONE_ID_STANDARD\n"); | |
1 | 3279 memset(lpTimeZoneInformation, 0, sizeof(TIME_ZONE_INFORMATION)); |
128 | 3280 lpTimeZoneInformation->Bias=360;//GMT-6 |
3281 memcpy(lpTimeZoneInformation->StandardName, name, sizeof(name)); | |
3282 lpTimeZoneInformation->StandardDate.wMonth=10; | |
3283 lpTimeZoneInformation->StandardDate.wDay=5; | |
3284 lpTimeZoneInformation->StandardDate.wHour=2; | |
3285 lpTimeZoneInformation->StandardBias=0; | |
3286 memcpy(lpTimeZoneInformation->DaylightName, pname, sizeof(pname)); | |
3287 lpTimeZoneInformation->DaylightDate.wMonth=4; | |
3288 lpTimeZoneInformation->DaylightDate.wDay=1; | |
3289 lpTimeZoneInformation->DaylightDate.wHour=2; | |
3290 lpTimeZoneInformation->DaylightBias=-60; | |
3291 return TIME_ZONE_ID_STANDARD; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3292 } |
1 | 3293 |
3465 | 3294 static void WINAPI expGetLocalTime(SYSTEMTIME* systime) |
1 | 3295 { |
3296 time_t local_time; | |
3297 struct tm *local_tm; | |
3298 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3299 |
128 | 3300 dbgprintf("GetLocalTime(0x%x)\n"); |
1 | 3301 gettimeofday(&tv, NULL); |
3302 local_time=tv.tv_sec; | |
3303 local_tm=localtime(&local_time); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3304 |
1 | 3305 systime->wYear = local_tm->tm_year + 1900; |
3306 systime->wMonth = local_tm->tm_mon + 1; | |
3307 systime->wDayOfWeek = local_tm->tm_wday; | |
3308 systime->wDay = local_tm->tm_mday; | |
3309 systime->wHour = local_tm->tm_hour; | |
3310 systime->wMinute = local_tm->tm_min; | |
3311 systime->wSecond = local_tm->tm_sec; | |
3312 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3313 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3314 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3315 " Milliseconds: %d\n", | |
3316 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3317 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
1 | 3318 } |
3319 | |
3465 | 3320 static int WINAPI expGetSystemTime(SYSTEMTIME* systime) |
1 | 3321 { |
3322 time_t local_time; | |
3323 struct tm *local_tm; | |
3324 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3325 |
128 | 3326 dbgprintf("GetSystemTime(0x%x)\n", systime); |
1 | 3327 gettimeofday(&tv, NULL); |
3328 local_time=tv.tv_sec; | |
3329 local_tm=gmtime(&local_time); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3330 |
1 | 3331 systime->wYear = local_tm->tm_year + 1900; |
3332 systime->wMonth = local_tm->tm_mon + 1; | |
3333 systime->wDayOfWeek = local_tm->tm_wday; | |
3334 systime->wDay = local_tm->tm_mday; | |
3335 systime->wHour = local_tm->tm_hour; | |
3336 systime->wMinute = local_tm->tm_min; | |
3337 systime->wSecond = local_tm->tm_sec; | |
3338 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3339 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3340 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3341 " Milliseconds: %d\n", | |
3342 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3343 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
2069 | 3344 return 0; |
1 | 3345 } |
3346 | |
7386 | 3347 #define SECS_1601_TO_1970 ((369 * 365 + 89) * 86400ULL) |
3348 static void WINAPI expGetSystemTimeAsFileTime(FILETIME* systime) | |
3349 { | |
3350 struct timeval tv; | |
3351 unsigned long long secs; | |
3352 | |
3353 dbgprintf("GetSystemTime(0x%x)\n", systime); | |
3354 gettimeofday(&tv, NULL); | |
3355 secs = (tv.tv_sec + SECS_1601_TO_1970) * 10000000; | |
3356 secs += tv.tv_usec * 10; | |
3357 systime->dwLowDateTime = secs & 0xffffffff; | |
3358 systime->dwHighDateTime = (secs >> 32); | |
3359 } | |
3360 | |
3465 | 3361 static int WINAPI expGetEnvironmentVariableA(const char* name, char* field, int size) |
1 | 3362 { |
24385 | 3363 //char *p; |
3465 | 3364 // printf("%s %x %x\n", name, field, size); |
1 | 3365 if(field)field[0]=0; |
3465 | 3366 /* |
3367 p = getenv(name); | |
3368 if (p) strncpy(field,p,size); | |
3369 */ | |
128 | 3370 if (strcmp(name,"__MSVCRT_HEAP_SELECT")==0) |
3465 | 3371 strcpy(field,"__GLOBAL_HEAP_SELECTED,1"); |
128 | 3372 dbgprintf("GetEnvironmentVariableA(0x%x='%s', 0x%x, %d) => %d\n", name, name, field, size, strlen(field)); |
3373 return strlen(field); | |
3374 } | |
3375 | |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3376 static int WINAPI expSetEnvironmentVariableA(const char *name, const char *value) |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3377 { |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3378 dbgprintf("SetEnvironmentVariableA(%s, %s)\n", name, value); |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3379 return 0; |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3380 } |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3381 |
3465 | 3382 static void* WINAPI expCoTaskMemAlloc(ULONG cb) |
128 | 3383 { |
3384 return my_mreq(cb, 0); | |
3385 } | |
3465 | 3386 static void WINAPI expCoTaskMemFree(void* cb) |
128 | 3387 { |
3388 my_release(cb); | |
3389 } | |
3390 | |
3465 | 3391 |
3392 | |
3393 | |
3547 | 3394 void* CoTaskMemAlloc(unsigned long cb) |
3465 | 3395 { |
3396 return expCoTaskMemAlloc(cb); | |
3397 } | |
3398 void CoTaskMemFree(void* cb) | |
3399 { | |
3400 expCoTaskMemFree(cb); | |
3401 } | |
128 | 3402 |
3403 struct COM_OBJECT_INFO | |
3404 { | |
3405 GUID clsid; | |
7386 | 3406 long (*GetClassObject) (GUID* clsid, const GUID* iid, void** ppv); |
128 | 3407 }; |
3408 | |
3409 static struct COM_OBJECT_INFO* com_object_table=0; | |
3410 static int com_object_size=0; | |
7386 | 3411 int RegisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
128 | 3412 { |
2069 | 3413 if(!clsid || !gcs) |
3414 return -1; | |
128 | 3415 com_object_table=realloc(com_object_table, sizeof(struct COM_OBJECT_INFO)*(++com_object_size)); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3416 com_object_table[com_object_size-1].clsid=*clsid; |
128 | 3417 com_object_table[com_object_size-1].GetClassObject=gcs; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3418 return 0; |
128 | 3419 } |
3420 | |
7386 | 3421 int UnregisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
2069 | 3422 { |
3423 int found = 0; | |
3424 int i = 0; | |
3425 if(!clsid || !gcs) | |
3426 return -1; | |
3427 | |
3428 if (com_object_table == 0) | |
3429 printf("Warning: UnregisterComClass() called without any registered class\n"); | |
3430 while (i < com_object_size) | |
3431 { | |
3432 if (found && i > 0) | |
3433 { | |
3434 memcpy(&com_object_table[i - 1].clsid, | |
3435 &com_object_table[i].clsid, sizeof(GUID)); | |
3436 com_object_table[i - 1].GetClassObject = | |
3437 com_object_table[i].GetClassObject; | |
3438 } | |
3439 else if (memcmp(&com_object_table[i].clsid, clsid, sizeof(GUID)) == 0 | |
3440 && com_object_table[i].GetClassObject == gcs) | |
3441 { | |
3465 | 3442 found++; |
2069 | 3443 } |
3444 i++; | |
3445 } | |
3446 if (found) | |
3447 { | |
3448 if (--com_object_size == 0) | |
3449 { | |
3450 free(com_object_table); | |
3465 | 3451 com_object_table = 0; |
2069 | 3452 } |
3453 } | |
3454 return 0; | |
3455 } | |
3456 | |
3457 | |
7386 | 3458 const GUID IID_IUnknown = |
3465 | 3459 { |
3460 0x00000000, 0x0000, 0x0000, | |
3461 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3462 }; | |
7386 | 3463 const GUID IID_IClassFactory = |
3465 | 3464 { |
3465 0x00000001, 0x0000, 0x0000, | |
3466 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3467 }; | |
3468 | |
3469 static long WINAPI expCoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, | |
7386 | 3470 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3471 { |
3472 int i; | |
3473 struct COM_OBJECT_INFO* ci=0; | |
3474 for(i=0; i<com_object_size; i++) | |
3475 if(!memcmp(rclsid, &com_object_table[i].clsid, sizeof(GUID))) | |
3476 ci=&com_object_table[i]; | |
3465 | 3477 if(!ci)return REGDB_E_CLASSNOTREG; |
128 | 3478 // in 'real' world we should mess with IClassFactory here |
3479 i=ci->GetClassObject(rclsid, riid, ppv); | |
3480 return i; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3481 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3482 |
128 | 3483 long CoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, |
7386 | 3484 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3485 { |
3486 return expCoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv); | |
3487 } | |
3488 | |
3465 | 3489 static int WINAPI expIsRectEmpty(CONST RECT *lprc) |
128 | 3490 { |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3491 int r = 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3492 int w,h; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3493 //trapbug(); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3494 if (lprc) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3495 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3496 w = lprc->right - lprc->left; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3497 h = lprc->bottom - lprc->top; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3498 if (w <= 0 || h <= 0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3499 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3500 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3501 else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3502 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3503 |
3465 | 3504 dbgprintf("IsRectEmpty(%p) => %s\n", lprc, (r) ? "TRUE" : "FALSE"); |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3505 //printf("Rect: left: %d, top: %d, right: %d, bottom: %d\n", lprc->left, lprc->top, lprc->right, lprc->bottom); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3506 // return 0; // wmv9? |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3507 return r; // TM20 |
128 | 3508 } |
3509 | |
3465 | 3510 static int _adjust_fdiv=0; //what's this? - used to adjust division |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
3511 static int _winver = 0x510; // windows version |
3465 | 3512 |
3513 | |
3514 | |
3515 | |
3516 static unsigned int WINAPI expGetTempPathA(unsigned int len, char* path) | |
128 | 3517 { |
3518 dbgprintf("GetTempPathA(%d, 0x%x)", len, path); | |
3519 if(len<5) | |
3520 { | |
3521 dbgprintf(" => 0\n"); | |
3522 return 0; | |
3523 } | |
3524 strcpy(path, "/tmp"); | |
3525 dbgprintf(" => 5 ( '/tmp' )\n"); | |
3526 return 5; | |
3527 } | |
3528 /* | |
3465 | 3529 FYI: |
3530 typedef struct | |
3531 { | |
3532 DWORD dwFileAttributes; | |
3533 FILETIME ftCreationTime; | |
3534 FILETIME ftLastAccessTime; | |
3535 FILETIME ftLastWriteTime; | |
3536 DWORD nFileSizeHigh; | |
3537 DWORD nFileSizeLow; | |
3538 DWORD dwReserved0; | |
3539 DWORD dwReserved1; | |
3540 CHAR cFileName[260]; | |
3541 CHAR cAlternateFileName[14]; | |
3542 } WIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; | |
3543 */ | |
3544 | |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3545 static DIR* qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3546 |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3547 static WIN_BOOL WINAPI expFindNextFileA(HANDLE h,LPWIN32_FIND_DATAA lpfd) |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3548 { |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3549 #ifdef CONFIG_QTX_CODECS |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3550 dbgprintf("FindNextFileA(0x%x, 0x%x) => 0\n", h, lpfd); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3551 if(h==FILE_HANDLE_quicktimeqtx){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3552 struct dirent* d; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3553 if(!qtx_dir) return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3554 while((d=readdir(qtx_dir))){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3555 char* x=strrchr(d->d_name,'.'); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3556 if(!x) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3557 if(strcmp(x,".qtx")) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3558 strcpy(lpfd->cFileName,d->d_name); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3559 // sprintf(lpfd->cAlternateFileName,"%-8s.qtx",d->d_name); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3560 strcpy(lpfd->cAlternateFileName,"foobar.qtx"); |
28305 | 3561 dbgprintf("### FindNext: %s\n",lpfd->cFileName); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3562 return 1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3563 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3564 closedir(qtx_dir); qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3565 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3566 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3567 #endif |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3568 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3569 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3570 |
3465 | 3571 static HANDLE WINAPI expFindFirstFileA(LPCSTR s, LPWIN32_FIND_DATAA lpfd) |
128 | 3572 { |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3573 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => 0\n", s, s, lpfd); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3574 // printf("\n### FindFirstFileA('%s')...\n",s); |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3575 #ifdef CONFIG_QTX_CODECS |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3576 if(strstr(s, "quicktime\\*.QTX")){ |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3577 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTX\n", s, s, lpfd); |
30907
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3578 dbgprintf("\n### Searching for QuickTime plugins (*.qtx) at %s...\n", |
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3579 codec_path); |
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3580 qtx_dir = opendir(codec_path); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3581 if(!qtx_dir) return (HANDLE)-1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3582 memset(lpfd,0,sizeof(*lpfd)); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3583 if(expFindNextFileA(FILE_HANDLE_quicktimeqtx,lpfd)) |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3584 return FILE_HANDLE_quicktimeqtx; |
30907
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3585 printf("loader: Couldn't find the QuickTime plugins (.qtx files) at %s\n", |
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3586 codec_path); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3587 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3588 } |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3589 #if 0 |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3590 if(strstr(s, "QuickTime.qts")){ |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3591 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTS\n", s, s, lpfd); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3592 // if(!strcmp(s,"C:\\windows\\QuickTime.qts\\QuickTime.qts\\*.QTX")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3593 // return (HANDLE)-1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3594 strcpy(lpfd->cFileName, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3595 strcpy(lpfd->cAlternateFileName, "QuickT~1.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3596 return FILE_HANDLE_quicktimeqts; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3597 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3598 #endif |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3599 #endif |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3600 if(strstr(s, "*.vwp")){ |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3601 // hack for VoxWare codec plugins: |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3602 strcpy(lpfd->cFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3603 strcpy(lpfd->cAlternateFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3604 return (HANDLE)0; |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3605 } |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3606 // return 'file not found' |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3607 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3608 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3609 |
3465 | 3610 static WIN_BOOL WINAPI expFindClose(HANDLE h) |
128 | 3611 { |
3612 dbgprintf("FindClose(0x%x) => 0\n", h); | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3613 #ifdef CONFIG_QTX_CODECS |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3614 // if(h==FILE_HANDLE_quicktimeqtx && qtx_dir){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3615 // closedir(qtx_dir); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3616 // qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3617 // } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3618 #endif |
128 | 3619 return 0; |
3620 } | |
3465 | 3621 static UINT WINAPI expSetErrorMode(UINT i) |
128 | 3622 { |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3623 dbgprintf("SetErrorMode(%d) => 0\n", i); |
128 | 3624 return 0; |
3625 } | |
3465 | 3626 static UINT WINAPI expGetWindowsDirectoryA(LPSTR s,UINT c) |
128 | 3627 { |
3628 char windir[]="c:\\windows"; | |
3629 int result; | |
3630 strncpy(s, windir, c); | |
3631 result=1+((c<strlen(windir))?c:strlen(windir)); | |
3632 dbgprintf("GetWindowsDirectoryA(0x%x, %d) => %d\n", s, c, result); | |
3633 return result; | |
3634 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3635 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3636 static UINT WINAPI expGetCurrentDirectoryA(UINT c, LPSTR s) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3637 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3638 char curdir[]="c:\\"; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3639 int result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3640 strncpy(s, curdir, c); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3641 result=1+((c<strlen(curdir))?c:strlen(curdir)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3642 dbgprintf("GetCurrentDirectoryA(0x%x, %d) => %d\n", s, c, result); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3643 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3644 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3645 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3646 static int WINAPI expSetCurrentDirectoryA(const char *pathname) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3647 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3648 dbgprintf("SetCurrentDirectoryA(0x%x = %s) => 1\n", pathname, pathname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3649 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3650 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3651 chdir(strcat(strrchr(pathname, '\\')+1, '/')); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3652 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3653 chdir(pathname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3654 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3655 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3656 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3657 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3658 static int WINAPI expCreateDirectoryA(const char *pathname, void *sa) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3659 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3660 dbgprintf("CreateDirectory(0x%x = %s, 0x%x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3661 pathname, pathname, sa); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3662 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3663 p = strrchr(pathname, '\\')+1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3664 strcpy(&buf[0], p); /* should be strncpy */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3665 if (!strlen(p)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3666 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3667 buf[0] = '.'; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3668 buf[1] = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3669 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
3670 #if 0 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3671 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3672 mkdir(strcat(strrchr(pathname, '\\')+1, '/'), 666); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3673 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3674 mkdir(pathname, 666); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3675 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3676 mkdir(&buf); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3677 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3678 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3679 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3680 #endif |
3465 | 3681 static WIN_BOOL WINAPI expDeleteFileA(LPCSTR s) |
128 | 3682 { |
3683 dbgprintf("DeleteFileA(0x%x='%s') => 0\n", s, s); | |
3684 return 0; | |
3685 } | |
3465 | 3686 static WIN_BOOL WINAPI expFileTimeToLocalFileTime(const FILETIME* cpf, LPFILETIME pf) |
128 | 3687 { |
3688 dbgprintf("FileTimeToLocalFileTime(0x%x, 0x%x) => 0\n", cpf, pf); | |
3689 return 0; | |
3690 } | |
3691 | |
3465 | 3692 static UINT WINAPI expGetTempFileNameA(LPCSTR cs1,LPCSTR cs2,UINT i,LPSTR ps) |
128 | 3693 { |
3694 char mask[16]="/tmp/AP_XXXXXX"; | |
3695 int result; | |
3696 dbgprintf("GetTempFileNameA(0x%x='%s', 0x%x='%s', %d, 0x%x)", cs1, cs1, cs2, cs2, i, ps); | |
3697 if(i && i<10) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3698 { |
128 | 3699 dbgprintf(" => -1\n"); |
3700 return -1; | |
3701 } | |
3702 result=mkstemp(mask); | |
3703 sprintf(ps, "AP%d", result); | |
3704 dbgprintf(" => %d\n", strlen(ps)); | |
3705 return strlen(ps); | |
3706 } | |
3707 // | |
3708 // This func might need proper implementation if we want AngelPotion codec. | |
3709 // They try to open APmpeg4v1.apl with it. | |
3710 // DLL will close opened file with CloseHandle(). | |
3711 // | |
3465 | 3712 static HANDLE WINAPI expCreateFileA(LPCSTR cs1,DWORD i1,DWORD i2, |
3713 LPSECURITY_ATTRIBUTES p1, DWORD i3,DWORD i4,HANDLE i5) | |
128 | 3714 { |
3715 dbgprintf("CreateFileA(0x%x='%s', %d, %d, 0x%x, %d, %d, 0x%x)\n", cs1, cs1, i1, | |
3465 | 3716 i2, p1, i3, i4, i5); |
128 | 3717 if((!cs1) || (strlen(cs1)<2))return -1; |
3128 | 3718 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3719 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3720 if(strstr(cs1, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3721 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3722 int result; |
30907
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3723 char* tmp = malloc(strlen(codec_path) + 50); |
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3724 strcpy(tmp, codec_path); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3725 strcat(tmp, "/"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3726 strcat(tmp, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3727 result=open(tmp, O_RDONLY); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3728 free(tmp); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3729 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3730 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3731 if(strstr(cs1, ".qtx")) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3732 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3733 int result; |
30907
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3734 char* tmp = malloc(strlen(codec_path) + 250); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3735 char* x=strrchr(cs1,'\\'); |
30907
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3736 sprintf(tmp, "%s/%s", codec_path, x ? (x + 1) : cs1); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3737 // printf("### Open: %s -> %s\n",cs1,tmp); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3738 result=open(tmp, O_RDONLY); |
8285 | 3739 free(tmp); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3740 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3741 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3742 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3743 |
3128 | 3744 if(strncmp(cs1, "AP", 2) == 0) |
128 | 3745 { |
3746 int result; | |
30907
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3747 char* tmp = malloc(strlen(codec_path) + 50); |
b32527b30d17
Get rid of pointless def_path variable; use codec_path directly instead.
diego
parents:
30901
diff
changeset
|
3748 strcpy(tmp, codec_path); |
128 | 3749 strcat(tmp, "/"); |
3750 strcat(tmp, "APmpg4v1.apl"); | |
3751 result=open(tmp, O_RDONLY); | |
3752 free(tmp); | |
3753 return result; | |
3128 | 3754 } |
31139
9a2e299dc256
Add final missing bits of CineForm HD support on Linux (via the Windows
sesse
parents:
30915
diff
changeset
|
3755 if (strstr(cs1, "vp3") || strstr(cs1, ".fpf") || strstr(cs1, ".col")) |
3128 | 3756 { |
3757 int r; | |
3758 int flg = 0; | |
18878 | 3759 char* tmp=malloc(20 + strlen(cs1)); |
3128 | 3760 strcpy(tmp, "/tmp/"); |
3761 strcat(tmp, cs1); | |
3762 r = 4; | |
3763 while (tmp[r]) | |
3764 { | |
3765 if (tmp[r] == ':' || tmp[r] == '\\') | |
3766 tmp[r] = '_'; | |
3767 r++; | |
3768 } | |
3769 if (GENERIC_READ & i1) | |
3770 flg |= O_RDONLY; | |
3771 else if (GENERIC_WRITE & i1) | |
3772 { | |
29027 | 3773 flg |= O_WRONLY | O_CREAT; |
3128 | 3774 printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", tmp, r, flg); |
3775 } | |
29027 | 3776 r=open(tmp, flg, S_IRWXU); |
3128 | 3777 free(tmp); |
3778 return r; | |
3779 } | |
3780 | |
12735
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3781 // Needed by wnvplay1.dll |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3782 if (strstr(cs1, "WINNOV.bmp")) |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3783 { |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3784 int r; |
24802 | 3785 r=open("/dev/null", O_RDONLY); |
12735
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3786 return r; |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3787 } |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3788 |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3789 #if 0 |
7386 | 3790 /* we need this for some virtualdub filters */ |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3791 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3792 int r; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3793 int flg = 0; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3794 if (GENERIC_READ & i1) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3795 flg |= O_RDONLY; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3796 else if (GENERIC_WRITE & i1) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3797 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3798 flg |= O_WRONLY; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3799 printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", cs1, r, flg); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3800 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3801 r=open(cs1, flg); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3802 return r; |
7386 | 3803 } |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3804 #endif |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3805 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3806 return atoi(cs1+2); |
128 | 3807 } |
5234 | 3808 static UINT WINAPI expGetSystemDirectoryA( |
3809 char* lpBuffer, // address of buffer for system directory | |
3810 UINT uSize // size of directory buffer | |
3811 ){ | |
3812 dbgprintf("GetSystemDirectoryA(%p,%d)\n", lpBuffer,uSize); | |
3813 if(!lpBuffer) strcpy(lpBuffer,"."); | |
3814 return 1; | |
3815 } | |
3816 /* | |
128 | 3817 static char sysdir[]="."; |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
3818 static LPCSTR WINAPI expGetSystemDirectoryA(void) |
128 | 3819 { |
3820 dbgprintf("GetSystemDirectoryA() => 0x%x='%s'\n", sysdir, sysdir); | |
3821 return sysdir; | |
3822 } | |
5234 | 3823 */ |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3824 static DWORD WINAPI expGetFullPathNameA |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3825 ( |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3826 LPCTSTR lpFileName, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3827 DWORD nBufferLength, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3828 LPTSTR lpBuffer, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3829 LPTSTR lpFilePart |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3830 ){ |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3831 if(!lpFileName) return 0; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3832 dbgprintf("GetFullPathNameA('%s',%d,%p,%p)\n",lpFileName,nBufferLength, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3833 lpBuffer, lpFilePart); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3834 #if 0 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3835 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3836 strcpy(lpFilePart, "Quick123.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3837 #else |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3838 strcpy(lpFilePart, lpFileName); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3839 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3840 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3841 if (strrchr(lpFileName, '\\')) |
8451 | 3842 lpFilePart = strrchr(lpFileName, '\\'); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3843 else |
13182 | 3844 lpFilePart = (LPTSTR)lpFileName; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3845 #endif |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3846 strcpy(lpBuffer, lpFileName); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3847 // strncpy(lpBuffer, lpFileName, rindex(lpFileName, '\\')-lpFileName); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3848 return strlen(lpBuffer); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3849 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3850 |
5234 | 3851 static DWORD WINAPI expGetShortPathNameA |
3852 ( | |
3853 LPCSTR longpath, | |
3854 LPSTR shortpath, | |
3855 DWORD shortlen | |
3856 ){ | |
3857 if(!longpath) return 0; | |
3858 dbgprintf("GetShortPathNameA('%s',%p,%d)\n",longpath,shortpath,shortlen); | |
3859 strcpy(shortpath,longpath); | |
3860 return strlen(shortpath); | |
3861 } | |
7386 | 3862 |
3465 | 3863 static WIN_BOOL WINAPI expReadFile(HANDLE h,LPVOID pv,DWORD size,LPDWORD rd,LPOVERLAPPED unused) |
128 | 3864 { |
3865 int result; | |
3866 dbgprintf("ReadFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, rd); | |
3867 result=read(h, pv, size); | |
3868 if(rd)*rd=result; | |
3869 if(!result)return 0; | |
3870 return 1; | |
3871 } | |
3872 | |
3465 | 3873 static WIN_BOOL WINAPI expWriteFile(HANDLE h,LPCVOID pv,DWORD size,LPDWORD wr,LPOVERLAPPED unused) |
128 | 3874 { |
3875 int result; | |
3876 dbgprintf("WriteFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, wr); | |
3877 if(h==1234)h=1; | |
3878 result=write(h, pv, size); | |
3879 if(wr)*wr=result; | |
3880 if(!result)return 0; | |
3881 return 1; | |
3882 } | |
3465 | 3883 static DWORD WINAPI expSetFilePointer(HANDLE h, LONG val, LPLONG ext, DWORD whence) |
128 | 3884 { |
3885 int wh; | |
31822 | 3886 dbgprintf("SetFilePointer(%d, 0x%x, 0x%x = %d, %d)\n", h, val, ext, ext ? *ext : 0, whence); |
3465 | 3887 //why would DLL want temporary file with >2Gb size? |
128 | 3888 switch(whence) |
3889 { | |
3890 case FILE_BEGIN: | |
3891 wh=SEEK_SET;break; | |
3892 case FILE_END: | |
3893 wh=SEEK_END;break; | |
3894 case FILE_CURRENT: | |
3895 wh=SEEK_CUR;break; | |
3896 default: | |
3897 return -1; | |
3898 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3899 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3900 if (val == 0 && ext != 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3901 val = val&(*ext); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3902 #endif |
128 | 3903 return lseek(h, val, wh); |
3904 } | |
3905 | |
3465 | 3906 static HDRVR WINAPI expOpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName, |
3907 LPARAM lParam2) | |
128 | 3908 { |
3909 dbgprintf("OpenDriverA(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3910 return -1; |
128 | 3911 } |
3465 | 3912 static HDRVR WINAPI expOpenDriver(LPCSTR szDriverName, LPCSTR szSectionName, |
3913 LPARAM lParam2) | |
128 | 3914 { |
3915 dbgprintf("OpenDriver(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3916 return -1; |
128 | 3917 } |
1 | 3918 |
3919 | |
3465 | 3920 static WIN_BOOL WINAPI expGetProcessAffinityMask(HANDLE hProcess, |
3921 LPDWORD lpProcessAffinityMask, | |
3922 LPDWORD lpSystemAffinityMask) | |
128 | 3923 { |
3924 dbgprintf("GetProcessAffinityMask(0x%x, 0x%x, 0x%x) => 1\n", | |
3465 | 3925 hProcess, lpProcessAffinityMask, lpSystemAffinityMask); |
128 | 3926 if(lpProcessAffinityMask)*lpProcessAffinityMask=1; |
3927 if(lpSystemAffinityMask)*lpSystemAffinityMask=1; | |
3928 return 1; | |
1 | 3929 } |
3930 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3931 // Fake implementation: does nothing, but does it right :) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3932 static WIN_BOOL WINAPI expSetProcessAffinityMask(HANDLE hProcess, |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3933 LPDWORD dwProcessAffinityMask) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3934 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3935 dbgprintf("SetProcessAffinityMask(0x%x, 0x%x) => 1\n", |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3936 hProcess, dwProcessAffinityMask); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3937 |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3938 return 1; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3939 }; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3940 |
3465 | 3941 static int WINAPI expMulDiv(int nNumber, int nNumerator, int nDenominator) |
713 | 3942 { |
3943 static const long long max_int=0x7FFFFFFFLL; | |
3944 static const long long min_int=-0x80000000LL; | |
3945 long long tmp=(long long)nNumber*(long long)nNumerator; | |
3465 | 3946 dbgprintf("expMulDiv %d * %d / %d\n", nNumber, nNumerator, nDenominator); |
713 | 3947 if(!nDenominator)return 1; |
3948 tmp/=nDenominator; | |
3949 if(tmp<min_int) return 1; | |
3950 if(tmp>max_int) return 1; | |
3951 return (int)tmp; | |
3952 } | |
3953 | |
3465 | 3954 static LONG WINAPI explstrcmpiA(const char* str1, const char* str2) |
713 | 3955 { |
3956 LONG result=strcasecmp(str1, str2); | |
3957 dbgprintf("strcmpi(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
3958 return result; | |
3959 } | |
3960 | |
3465 | 3961 static LONG WINAPI explstrlenA(const char* str1) |
713 | 3962 { |
3963 LONG result=strlen(str1); | |
3134 | 3964 dbgprintf("strlen(0x%x='%.50s') => %d\n", str1, str1, result); |
713 | 3965 return result; |
3966 } | |
3967 | |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
3968 static LONG WINAPI explstrlenW(const uint16_t* s) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
3969 { |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
3970 int result = 0; |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
3971 while (s && s[result]) result++; |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
3972 return result; |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
3973 } |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
3974 |
3465 | 3975 static LONG WINAPI explstrcpyA(char* str1, const char* str2) |
713 | 3976 { |
3977 int result= (int) strcpy(str1, str2); | |
3134 | 3978 dbgprintf("strcpy(0x%.50x, 0x%.50x='%.50s') => %d\n", str1, str2, str2, result); |
713 | 3979 return result; |
3980 } | |
3465 | 3981 static LONG WINAPI explstrcpynA(char* str1, const char* str2,int len) |
2069 | 3982 { |
3983 int result; | |
3984 if (strlen(str2)>len) | |
3465 | 3985 result = (int) strncpy(str1, str2,len); |
2069 | 3986 else |
3465 | 3987 result = (int) strcpy(str1,str2); |
2069 | 3988 dbgprintf("strncpy(0x%x, 0x%x='%s' len %d strlen %d) => %x\n", str1, str2, str2,len, strlen(str2),result); |
3989 return result; | |
3990 } | |
3465 | 3991 static LONG WINAPI explstrcatA(char* str1, const char* str2) |
2069 | 3992 { |
3993 int result= (int) strcat(str1, str2); | |
3994 dbgprintf("strcat(0x%x, 0x%x='%s') => %d\n", str1, str2, str2, result); | |
3995 return result; | |
3996 } | |
3997 | |
128 | 3998 |
3465 | 3999 static LONG WINAPI expInterlockedExchange(long *dest, long l) |
497 | 4000 { |
3465 | 4001 long retval = *dest; |
4002 *dest = l; | |
4003 return retval; | |
497 | 4004 } |
4005 | |
3465 | 4006 static void WINAPI expInitCommonControls(void) |
1543 | 4007 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4008 dbgprintf("InitCommonControls called!\n"); |
2069 | 4009 return; |
1543 | 4010 } |
4011 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
4012 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4013 /* needed by QuickTime.qts */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4014 static HWND WINAPI expCreateUpDownControl (DWORD style, INT x, INT y, INT cx, INT cy, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4015 HWND parent, INT id, HINSTANCE inst, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4016 HWND buddy, INT maxVal, INT minVal, INT curVal) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4017 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4018 dbgprintf("CreateUpDownControl(...)\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4019 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4020 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4021 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4022 |
3457 | 4023 /* alex: implement this call! needed for 3ivx */ |
3465 | 4024 static HRESULT WINAPI expCoCreateFreeThreadedMarshaler(void *pUnkOuter, void **ppUnkInner) |
2396 | 4025 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4026 dbgprintf("CoCreateFreeThreadedMarshaler(%p, %p) called!\n", |
3465 | 4027 pUnkOuter, ppUnkInner); |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4028 // return 0; |
3457 | 4029 return ERROR_CALL_NOT_IMPLEMENTED; |
2396 | 4030 } |
4031 | |
2779 | 4032 |
3465 | 4033 static int WINAPI expDuplicateHandle(HANDLE hSourceProcessHandle, // handle to source process |
4034 HANDLE hSourceHandle, // handle to duplicate | |
4035 HANDLE hTargetProcessHandle, // handle to target process | |
4036 HANDLE* lpTargetHandle, // duplicate handle | |
4037 DWORD dwDesiredAccess, // requested access | |
4038 int bInheritHandle, // handle inheritance option | |
4039 DWORD dwOptions // optional actions | |
4040 ) | |
2779 | 4041 { |
4042 dbgprintf("DuplicateHandle(%p, %p, %p, %p, 0x%x, %d, %d) called\n", | |
3465 | 4043 hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, |
4044 lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions); | |
2779 | 4045 *lpTargetHandle = hSourceHandle; |
4046 return 1; | |
4047 } | |
4048 | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4049 static HRESULT WINAPI expCoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4050 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4051 dbgprintf("CoInitializeEx(%p, %d) called\n", lpReserved, dwCoInit); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4052 return S_OK; |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4053 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4054 |
3128 | 4055 // required by PIM1 codec (used by win98 PCTV Studio capture sw) |
3465 | 4056 static HRESULT WINAPI expCoInitialize( |
4057 LPVOID lpReserved /* [in] pointer to win32 malloc interface | |
4058 (obsolete, should be NULL) */ | |
4059 ) | |
3033 | 4060 { |
3465 | 4061 /* |
4062 * Just delegate to the newer method. | |
4063 */ | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4064 return expCoInitializeEx(lpReserved, COINIT_APARTMENTTHREADED); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4065 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4066 |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4067 static void WINAPI expCoUninitialize(void) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4068 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4069 dbgprintf("CoUninitialize() called\n"); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4070 } |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4071 |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4072 /* allow static linking */ |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4073 HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4074 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4075 return expCoInitializeEx(lpReserved, dwCoInit); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4076 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4077 HRESULT WINAPI CoInitialize(LPVOID lpReserved) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4078 { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4079 return expCoInitialize(lpReserved); |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4080 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4081 void WINAPI CoUninitialize(void) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4082 { |
30224
f3da21b2590d
Remove return statement from function that has no return value.
reimar
parents:
30220
diff
changeset
|
4083 expCoUninitialize(); |
3033 | 4084 } |
4085 | |
3465 | 4086 static DWORD WINAPI expSetThreadAffinityMask |
3441 | 4087 ( |
4088 HANDLE hThread, | |
4089 DWORD dwThreadAffinityMask | |
4090 ){ | |
4091 return 0; | |
4092 }; | |
3033 | 4093 |
3465 | 4094 /* |
4095 * no WINAPI functions - CDECL | |
4096 */ | |
4097 static void* expmalloc(int size) | |
4098 { | |
4099 //printf("malloc"); | |
4100 // return malloc(size); | |
4101 void* result=my_mreq(size,0); | |
4102 dbgprintf("malloc(0x%x) => 0x%x\n", size,result); | |
4103 if(result==0) | |
4104 printf("WARNING: malloc() failed\n"); | |
4105 return result; | |
4106 } | |
4107 static void expfree(void* mem) | |
4108 { | |
4109 // return free(mem); | |
4110 dbgprintf("free(%p)\n", mem); | |
4111 my_release(mem); | |
4112 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4113 /* needed by atrac3.acm */ |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4114 static void *expcalloc(int num, int size) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4115 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4116 void* result=my_mreq(num*size,1); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4117 dbgprintf("calloc(%d,%d) => %p\n", num,size,result); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4118 if(result==0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4119 printf("WARNING: calloc() failed\n"); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4120 return result; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4121 } |
3465 | 4122 static void* expnew(int size) |
4123 { | |
4124 // printf("NEW:: Call from address %08x\n STACK DUMP:\n", *(-1+(int*)&size)); | |
4125 // printf("%08x %08x %08x %08x\n", | |
4126 // size, *(1+(int*)&size), | |
4127 // *(2+(int*)&size),*(3+(int*)&size)); | |
4128 void* result; | |
4129 assert(size >= 0); | |
4130 | |
4131 result=my_mreq(size,0); | |
4132 dbgprintf("new(%d) => %p\n", size, result); | |
4133 if (result==0) | |
4134 printf("WARNING: new() failed\n"); | |
4135 return result; | |
4136 | |
4137 } | |
4138 static int expdelete(void* memory) | |
4139 { | |
4140 dbgprintf("delete(%p)\n", memory); | |
4141 my_release(memory); | |
4142 return 0; | |
4143 } | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4144 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4145 /* |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4146 * local definition - we need only the last two members at this point |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4147 * otherwice we would have to introduce here GUIDs and some more types.. |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4148 */ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4149 typedef struct __attribute__((__packed__)) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4150 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4151 char hay[0x40]; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4152 unsigned long cbFormat; //0x40 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4153 char* pbFormat; //0x44 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4154 } MY_MEDIA_TYPE; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4155 static HRESULT WINAPI expMoCopyMediaType(MY_MEDIA_TYPE* dest, const MY_MEDIA_TYPE* src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4156 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4157 if (!dest || !src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4158 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4159 memcpy(dest, src, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4160 if (dest->cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4161 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4162 dest->pbFormat = (char*) my_mreq(dest->cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4163 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4164 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4165 memcpy(dest->pbFormat, src->pbFormat, dest->cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4166 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4167 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4168 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4169 static HRESULT WINAPI expMoInitMediaType(MY_MEDIA_TYPE* dest, DWORD cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4170 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4171 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4172 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4173 memset(dest, 0, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4174 if (cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4175 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4176 dest->pbFormat = (char*) my_mreq(cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4177 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4178 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4179 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4180 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4181 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4182 static HRESULT WINAPI expMoCreateMediaType(MY_MEDIA_TYPE** dest, DWORD cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4183 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4184 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4185 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4186 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4187 return expMoInitMediaType(*dest, cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4188 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4189 static HRESULT WINAPI expMoDuplicateMediaType(MY_MEDIA_TYPE** dest, const void* src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4190 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4191 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4192 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4193 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4194 return expMoCopyMediaType(*dest, src); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4195 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4196 static HRESULT WINAPI expMoFreeMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4197 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4198 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4199 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4200 if (dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4201 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4202 my_release(dest->pbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4203 dest->pbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4204 dest->cbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4205 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4206 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4207 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4208 static HRESULT WINAPI expMoDeleteMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4209 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4210 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4211 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4212 expMoFreeMediaType(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4213 my_release(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4214 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4215 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4216 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4217 static int exp_snprintf( char *str, int size, const char *format, ... ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4218 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4219 int x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4220 va_list va; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4221 va_start(va, format); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4222 x=snprintf(str,size,format,va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4223 dbgprintf("_snprintf( 0x%x, %d, %s, ... ) => %d\n",str,size,format,x); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4224 va_end(va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4225 return x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4226 } |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4227 |
7386 | 4228 #if 0 |
3465 | 4229 static int exp_initterm(int v1, int v2) |
4230 { | |
4231 dbgprintf("_initterm(0x%x, 0x%x) => 0\n", v1, v2); | |
4232 return 0; | |
4233 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4234 #else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4235 /* merged from wine - 2002.04.21 */ |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
4236 typedef void (*INITTERMFUNC)(); |
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
4237 static int exp_initterm(INITTERMFUNC *start, INITTERMFUNC *end) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4238 { |
7386 | 4239 dbgprintf("_initterm(0x%x, 0x%x) %p\n", start, end, *start); |
4240 while (start < end) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4241 { |
7386 | 4242 if (*start) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4243 { |
7386 | 4244 //printf("call _initfunc: from: %p %d\n", *start); |
4245 // ok this trick with push/pop is necessary as otherwice | |
4246 // edi/esi registers are being trashed | |
4247 void* p = *start; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4248 __asm__ volatile |
7386 | 4249 ( |
4250 "pushl %%ebx \n\t" | |
4251 "pushl %%ecx \n\t" | |
4252 "pushl %%edx \n\t" | |
4253 "pushl %%edi \n\t" | |
4254 "pushl %%esi \n\t" | |
4255 "call *%%eax \n\t" | |
4256 "popl %%esi \n\t" | |
4257 "popl %%edi \n\t" | |
4258 "popl %%edx \n\t" | |
4259 "popl %%ecx \n\t" | |
4260 "popl %%ebx \n\t" | |
4261 : | |
4262 : "a"(p) | |
4263 : "memory" | |
4264 ); | |
4265 //printf("done %p %d:%d\n", end); | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4266 } |
7386 | 4267 start++; |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4268 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4269 return 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4270 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4271 #endif |
3465 | 4272 |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4273 /* Fake _initterm_e from msvcr80.dll, needed by sirenacm.dll |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4274 * NOTE: If I make this an alias for _initterm, then sirenacm.dll tries to call |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4275 other uninmplemented functions; keep this in mind if some future codec needs |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4276 a real implementation of this function */ |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4277 static int exp_initterm_e(INITTERMFUNC *start, INITTERMFUNC *end) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4278 { |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4279 dbgprintf("_initterm_e(0x%x, 0x%x)\n", start, end); |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4280 return 0; |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4281 } |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4282 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
4283 static void* exp__dllonexit(void) |
7386 | 4284 { |
4285 // FIXME extract from WINE | |
4286 return NULL; | |
4287 } | |
4288 | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4289 static int expwsprintfA(char* string, const char* format, ...) |
3465 | 4290 { |
4291 va_list va; | |
4292 int result; | |
4293 va_start(va, format); | |
4294 result = vsprintf(string, format, va); | |
4295 dbgprintf("wsprintfA(0x%x, '%s', ...) => %d\n", string, format, result); | |
4296 va_end(va); | |
4297 return result; | |
4298 } | |
4299 | |
4300 static int expsprintf(char* str, const char* format, ...) | |
4301 { | |
4302 va_list args; | |
4303 int r; | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4304 dbgprintf("sprintf(0x%x, %s)\n", str, format); |
3465 | 4305 va_start(args, format); |
4306 r = vsprintf(str, format, args); | |
4307 va_end(args); | |
4308 return r; | |
4309 } | |
4310 static int expsscanf(const char* str, const char* format, ...) | |
4311 { | |
4312 va_list args; | |
4313 int r; | |
4314 dbgprintf("sscanf(%s, %s)\n", str, format); | |
4315 va_start(args, format); | |
4316 r = vsscanf(str, format, args); | |
4317 va_end(args); | |
4318 return r; | |
4319 } | |
4320 static void* expfopen(const char* path, const char* mode) | |
4321 { | |
4322 printf("fopen: \"%s\" mode:%s\n", path, mode); | |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4323 if (strcmp(mode, "r") == 0 || strcmp(mode, "rb") == 0) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4324 return NULL; |
3465 | 4325 //return fopen(path, mode); |
4326 return fdopen(0, mode); // everything on screen | |
4327 } | |
4328 static int expfprintf(void* stream, const char* format, ...) | |
4329 { | |
4330 va_list args; | |
4331 int r = 0; | |
4332 dbgprintf("fprintf(%p, %s, ...)\n", stream, format); | |
4333 va_start(args, format); | |
4334 r = vfprintf((FILE*) stream, format, args); | |
4335 va_end(args); | |
4336 return r; | |
4337 } | |
4338 | |
4339 static int expprintf(const char* format, ...) | |
4340 { | |
4341 va_list args; | |
4342 int r; | |
4343 dbgprintf("printf(%s, ...)\n", format); | |
4344 va_start(args, format); | |
4345 r = vprintf(format, args); | |
4346 va_end(args); | |
4347 return r; | |
4348 } | |
4349 | |
4350 static char* expgetenv(const char* varname) | |
4351 { | |
4352 char* v = getenv(varname); | |
4353 dbgprintf("getenv(%s) => %s\n", varname, v); | |
4354 return v; | |
4355 } | |
4356 | |
4357 static void* expwcscpy(WCHAR* dst, const WCHAR* src) | |
4358 { | |
4359 WCHAR* p = dst; | |
4360 while ((*p++ = *src++)) | |
4361 ; | |
4362 return dst; | |
4363 } | |
4364 | |
4365 static char* expstrrchr(char* string, int value) | |
4366 { | |
4367 char* result=strrchr(string, value); | |
4368 if(result) | |
4369 dbgprintf("strrchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4370 else | |
4371 dbgprintf("strrchr(0x%x='%s', %d) => 0", string, string, value); | |
4372 return result; | |
4373 } | |
4374 | |
4375 static char* expstrchr(char* string, int value) | |
4376 { | |
4377 char* result=strchr(string, value); | |
4378 if(result) | |
4379 dbgprintf("strchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4380 else | |
4381 dbgprintf("strchr(0x%x='%s', %d) => 0", string, string, value); | |
4382 return result; | |
4383 } | |
4384 static int expstrlen(char* str) | |
4385 { | |
4386 int result=strlen(str); | |
4387 dbgprintf("strlen(0x%x='%s') => %d\n", str, str, result); | |
4388 return result; | |
4389 } | |
4390 static char* expstrcpy(char* str1, const char* str2) | |
4391 { | |
4392 char* result= strcpy(str1, str2); | |
4393 dbgprintf("strcpy(0x%x, 0x%x='%s') => %p\n", str1, str2, str2, result); | |
4394 return result; | |
4395 } | |
9397 | 4396 static char* expstrncpy(char* str1, const char* str2, size_t count) |
4397 { | |
4398 char* result= strncpy(str1, str2, count); | |
4399 dbgprintf("strncpy(0x%x, 0x%x='%s', %d) => %p\n", str1, str2, str2, count, result); | |
4400 return result; | |
4401 } | |
3465 | 4402 static int expstrcmp(const char* str1, const char* str2) |
4403 { | |
4404 int result=strcmp(str1, str2); | |
4405 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4406 return result; | |
4407 } | |
4408 static int expstrncmp(const char* str1, const char* str2,int x) | |
4409 { | |
4410 int result=strncmp(str1, str2,x); | |
4411 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4412 return result; | |
4413 } | |
4414 static char* expstrcat(char* str1, const char* str2) | |
4415 { | |
4416 char* result = strcat(str1, str2); | |
4417 dbgprintf("strcat(0x%x='%s', 0x%x='%s') => %p\n", str1, str1, str2, str2, result); | |
4418 return result; | |
4419 } | |
4420 static char* exp_strdup(const char* str1) | |
4421 { | |
4422 int l = strlen(str1); | |
7386 | 4423 char* result = (char*) my_mreq(l + 1,0); |
3465 | 4424 if (result) |
4425 strcpy(result, str1); | |
4426 dbgprintf("_strdup(0x%x='%s') => %p\n", str1, str1, result); | |
4427 return result; | |
4428 } | |
4429 static int expisalnum(int c) | |
4430 { | |
4431 int result= (int) isalnum(c); | |
4432 dbgprintf("isalnum(0x%x='%c' => %d\n", c, c, result); | |
4433 return result; | |
4434 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4435 static int expisspace(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4436 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4437 int result= (int) isspace(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4438 dbgprintf("isspace(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4439 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4440 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4441 static int expisalpha(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4442 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4443 int result= (int) isalpha(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4444 dbgprintf("isalpha(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4445 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4446 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4447 static int expisdigit(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4448 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4449 int result= (int) isdigit(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4450 dbgprintf("isdigit(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4451 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4452 } |
3465 | 4453 static void* expmemmove(void* dest, void* src, int n) |
4454 { | |
4455 void* result = memmove(dest, src, n); | |
4456 dbgprintf("memmove(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4457 return result; | |
4458 } | |
4459 static int expmemcmp(void* dest, void* src, int n) | |
4460 { | |
4461 int result = memcmp(dest, src, n); | |
4462 dbgprintf("memcmp(0x%x, 0x%x, %d) => %d\n", dest, src, n, result); | |
4463 return result; | |
4464 } | |
4465 static void* expmemcpy(void* dest, void* src, int n) | |
4466 { | |
4467 void *result = memcpy(dest, src, n); | |
4468 dbgprintf("memcpy(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4469 return result; | |
4470 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4471 static void* expmemset(void* dest, int c, size_t n) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4472 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4473 void *result = memset(dest, c, n); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4474 dbgprintf("memset(0x%x, %d, %d) => %p\n", dest, c, n, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4475 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4476 } |
3465 | 4477 static time_t exptime(time_t* t) |
4478 { | |
4479 time_t result = time(t); | |
4480 dbgprintf("time(0x%x) => %d\n", t, result); | |
4481 return result; | |
4482 } | |
4483 | |
4484 static int exprand(void) | |
4485 { | |
4486 return rand(); | |
4487 } | |
4488 | |
4489 static void expsrand(int seed) | |
4490 { | |
4491 srand(seed); | |
4492 } | |
4493 | |
4494 #if 1 | |
4495 | |
22875 | 4496 // preferred compilation with -O2 -ffast-math ! |
3465 | 4497 |
4498 static double explog10(double x) | |
4499 { | |
4500 /*printf("Log10 %f => %f 0x%Lx\n", x, log10(x), *((int64_t*)&x));*/ | |
4501 return log10(x); | |
4502 } | |
4503 | |
4504 static double expcos(double x) | |
4505 { | |
4506 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ | |
4507 return cos(x); | |
4508 } | |
4509 | |
4510 #else | |
4511 | |
4512 static void explog10(void) | |
4513 { | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4514 __asm__ volatile |
3465 | 4515 ( |
4516 "fldl 8(%esp) \n\t" | |
4517 "fldln2 \n\t" | |
4518 "fxch %st(1) \n\t" | |
4519 "fyl2x \n\t" | |
4520 ); | |
4521 } | |
4522 | |
4523 static void expcos(void) | |
4524 { | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4525 __asm__ volatile |
3465 | 4526 ( |
4527 "fldl 8(%esp) \n\t" | |
4528 "fcos \n\t" | |
4529 ); | |
4530 } | |
4531 | |
4532 #endif | |
4533 | |
4534 // this seem to be the only how to make this function working properly | |
4535 // ok - I've spent tremendous amount of time (many many many hours | |
4536 // of debuging fixing & testing - it's almost unimaginable - kabi | |
4537 | |
4538 // _ftol - operated on the float value which is already on the FPU stack | |
3923
3fd9b781a9d2
workaround for the guilty code that caused sig11 when compiled with gcc-3.0.x
pl
parents:
3672
diff
changeset
|
4539 |
3465 | 4540 static void exp_ftol(void) |
4541 { | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4542 __asm__ volatile |
3465 | 4543 ( |
4544 "sub $12, %esp \n\t" | |
4545 "fstcw -2(%ebp) \n\t" | |
4546 "wait \n\t" | |
3925 | 4547 "movw -2(%ebp), %ax \n\t" |
4548 "orb $0x0C, %ah \n\t" | |
4549 "movw %ax, -4(%ebp) \n\t" | |
3465 | 4550 "fldcw -4(%ebp) \n\t" |
4551 "fistpl -12(%ebp) \n\t" | |
4552 "fldcw -2(%ebp) \n\t" | |
3925 | 4553 "movl -12(%ebp), %eax \n\t" |
4554 //Note: gcc 3.03 does not do the following op if it | |
4555 // knows that ebp=esp | |
4556 "movl %ebp, %esp \n\t" | |
3465 | 4557 ); |
4558 } | |
4559 | |
13739
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4560 #define FPU_DOUBLES(var1,var2) double var1,var2; \ |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4561 __asm__ volatile( "fstpl %0;fwait" : "=m" (var2) : ); \ |
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4562 __asm__ volatile( "fstpl %0;fwait" : "=m" (var1) : ) |
13739
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4563 |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4564 static double exp_CIpow(void) |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4565 { |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4566 FPU_DOUBLES(x,y); |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4567 |
32352
76f94c00a69f
1000l, %lf is not valid format string for printf (only for scanf) and actually
reimar
parents:
32049
diff
changeset
|
4568 dbgprintf("_CIpow(%f, %f)\n", x, y); |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4569 return pow(x, y); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4570 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4571 |
3465 | 4572 static double exppow(double x, double y) |
4573 { | |
4574 /*printf("Pow %f %f 0x%Lx 0x%Lx => %f\n", x, y, *((int64_t*)&x), *((int64_t*)&y), pow(x, y));*/ | |
4575 return pow(x, y); | |
4576 } | |
4577 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4578 static double expldexp(double x, int expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4579 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4580 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4581 return ldexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4582 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4583 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4584 static double expfrexp(double x, int* expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4585 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4586 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4587 return frexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4588 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4589 |
3465 | 4590 |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4591 static void exp_splitpath(const char *path, char *drive, char *dir, char *name, char *ext) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4592 { |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4593 const char *ext_start = strrchr(path, '.'); |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4594 int name_len = ext_start ? ext_start - path : strlen(path); |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4595 if (drive) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4596 strcpy(drive, ""); |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4597 if (dir) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4598 strcpy(dir, ""); |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4599 if (name) { |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4600 strncpy(name, path, name_len); |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4601 name[name_len] = 0; |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4602 } |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4603 if (ext) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4604 strcpy(ext, ext_start ? ext_start : ""); |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4605 } |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4606 |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4607 static char *exp_mbsupr(char *str) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4608 { |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4609 int i; |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4610 for (i = 0; str[i]; i++) str[i] = toupper(str[i]); |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4611 return str; |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4612 } |
3465 | 4613 |
4614 static int exp_stricmp(const char* s1, const char* s2) | |
4615 { | |
4616 return strcasecmp(s1, s2); | |
4617 } | |
4618 | |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4619 static uint64_t exp_time64(void) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4620 { |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4621 return 0; |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4622 } |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
4623 |
3465 | 4624 /* from declaration taken from Wine sources - this fountion seems to be |
4625 * undocumented in any M$ doc */ | |
4626 static int exp_setjmp3(void* jmpbuf, int x) | |
4627 { | |
4628 //dbgprintf("!!!!UNIMPLEMENTED: setjmp3(%p, %d) => 0\n", jmpbuf, x); | |
4629 //return 0; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4630 __asm__ volatile |
3465 | 4631 ( |
4632 //"mov 4(%%esp), %%edx \n\t" | |
4633 "mov (%%esp), %%eax \n\t" | |
4634 "mov %%eax, (%%edx) \n\t" // store ebp | |
4635 | |
4636 //"mov %%ebp, (%%edx) \n\t" | |
4637 "mov %%ebx, 4(%%edx) \n\t" | |
4638 "mov %%edi, 8(%%edx) \n\t" | |
4639 "mov %%esi, 12(%%edx) \n\t" | |
4640 "mov %%esp, 16(%%edx) \n\t" | |
4641 | |
4642 "mov 4(%%esp), %%eax \n\t" | |
4643 "mov %%eax, 20(%%edx) \n\t" | |
4644 | |
4645 "movl $0x56433230, 32(%%edx) \n\t" // VC20 ?? | |
4646 "movl $0, 36(%%edx) \n\t" | |
4647 : // output | |
4648 : "d"(jmpbuf) // input | |
7386 | 4649 : "eax" |
3465 | 4650 ); |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4651 __asm__ volatile |
3465 | 4652 ( |
4653 "mov %%fs:0, %%eax \n\t" // unsure | |
4654 "mov %%eax, 24(%%edx) \n\t" | |
4655 "cmp $0xffffffff, %%eax \n\t" | |
4656 "jnz l1 \n\t" | |
4657 "mov %%eax, 28(%%edx) \n\t" | |
4658 "l1: \n\t" | |
4659 : | |
4660 : | |
7386 | 4661 : "eax" |
3465 | 4662 ); |
4663 | |
4664 return 0; | |
4665 } | |
4666 | |
5234 | 4667 static DWORD WINAPI expGetCurrentProcessId(void) |
4668 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4669 dbgprintf("GetCurrentProcessId(void) => %d\n", getpid()); |
5234 | 4670 return getpid(); //(DWORD)NtCurrentTeb()->pid; |
4671 } | |
4672 | |
4673 | |
4674 typedef struct { | |
4675 UINT wPeriodMin; | |
4676 UINT wPeriodMax; | |
4677 } TIMECAPS, *LPTIMECAPS; | |
4678 | |
4679 static MMRESULT WINAPI exptimeGetDevCaps(LPTIMECAPS lpCaps, UINT wSize) | |
4680 { | |
4681 dbgprintf("timeGetDevCaps(%p, %u) !\n", lpCaps, wSize); | |
4682 | |
4683 lpCaps->wPeriodMin = 1; | |
4684 lpCaps->wPeriodMax = 65535; | |
4685 return 0; | |
4686 } | |
4687 | |
4688 static MMRESULT WINAPI exptimeBeginPeriod(UINT wPeriod) | |
4689 { | |
4690 dbgprintf("timeBeginPeriod(%u) !\n", wPeriod); | |
4691 | |
4692 if (wPeriod < 1 || wPeriod > 65535) return 96+1; //TIMERR_NOCANDO; | |
4693 return 0; | |
4694 } | |
4695 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
4696 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4697 static MMRESULT WINAPI exptimeEndPeriod(UINT wPeriod) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4698 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4699 dbgprintf("timeEndPeriod(%u) !\n", wPeriod); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4700 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4701 if (wPeriod < 1 || wPeriod > 65535) return 96+1; //TIMERR_NOCANDO; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4702 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4703 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4704 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4705 |
5234 | 4706 static void WINAPI expGlobalMemoryStatus( |
4707 LPMEMORYSTATUS lpmem | |
4708 ) { | |
4709 static MEMORYSTATUS cached_memstatus; | |
4710 static int cache_lastchecked = 0; | |
4711 SYSTEM_INFO si; | |
4712 FILE *f; | |
4713 | |
4714 if (time(NULL)==cache_lastchecked) { | |
4715 memcpy(lpmem,&cached_memstatus,sizeof(MEMORYSTATUS)); | |
4716 return; | |
4717 } | |
4718 | |
4719 f = fopen( "/proc/meminfo", "r" ); | |
4720 if (f) | |
4721 { | |
4722 char buffer[256]; | |
4723 int total, used, free, shared, buffers, cached; | |
4724 | |
4725 lpmem->dwLength = sizeof(MEMORYSTATUS); | |
4726 lpmem->dwTotalPhys = lpmem->dwAvailPhys = 0; | |
4727 lpmem->dwTotalPageFile = lpmem->dwAvailPageFile = 0; | |
4728 while (fgets( buffer, sizeof(buffer), f )) | |
4729 { | |
4730 /* old style /proc/meminfo ... */ | |
4731 if (sscanf( buffer, "Mem: %d %d %d %d %d %d", &total, &used, &free, &shared, &buffers, &cached )) | |
4732 { | |
4733 lpmem->dwTotalPhys += total; | |
4734 lpmem->dwAvailPhys += free + buffers + cached; | |
4735 } | |
4736 if (sscanf( buffer, "Swap: %d %d %d", &total, &used, &free )) | |
4737 { | |
4738 lpmem->dwTotalPageFile += total; | |
4739 lpmem->dwAvailPageFile += free; | |
4740 } | |
4741 | |
4742 /* new style /proc/meminfo ... */ | |
4743 if (sscanf(buffer, "MemTotal: %d", &total)) | |
4744 lpmem->dwTotalPhys = total*1024; | |
4745 if (sscanf(buffer, "MemFree: %d", &free)) | |
4746 lpmem->dwAvailPhys = free*1024; | |
4747 if (sscanf(buffer, "SwapTotal: %d", &total)) | |
4748 lpmem->dwTotalPageFile = total*1024; | |
4749 if (sscanf(buffer, "SwapFree: %d", &free)) | |
4750 lpmem->dwAvailPageFile = free*1024; | |
4751 if (sscanf(buffer, "Buffers: %d", &buffers)) | |
4752 lpmem->dwAvailPhys += buffers*1024; | |
4753 if (sscanf(buffer, "Cached: %d", &cached)) | |
4754 lpmem->dwAvailPhys += cached*1024; | |
4755 } | |
4756 fclose( f ); | |
4757 | |
4758 if (lpmem->dwTotalPhys) | |
4759 { | |
4760 DWORD TotalPhysical = lpmem->dwTotalPhys+lpmem->dwTotalPageFile; | |
4761 DWORD AvailPhysical = lpmem->dwAvailPhys+lpmem->dwAvailPageFile; | |
4762 lpmem->dwMemoryLoad = (TotalPhysical-AvailPhysical) | |
4763 / (TotalPhysical / 100); | |
4764 } | |
4765 } else | |
4766 { | |
4767 /* FIXME: should do something for other systems */ | |
4768 lpmem->dwMemoryLoad = 0; | |
4769 lpmem->dwTotalPhys = 16*1024*1024; | |
4770 lpmem->dwAvailPhys = 16*1024*1024; | |
4771 lpmem->dwTotalPageFile = 16*1024*1024; | |
4772 lpmem->dwAvailPageFile = 16*1024*1024; | |
4773 } | |
4774 expGetSystemInfo(&si); | |
31823 | 4775 lpmem->dwTotalVirtual = (uint8_t *)si.lpMaximumApplicationAddress-(uint8_t *)si.lpMinimumApplicationAddress; |
5234 | 4776 /* FIXME: we should track down all the already allocated VM pages and substract them, for now arbitrarily remove 64KB so that it matches NT */ |
4777 lpmem->dwAvailVirtual = lpmem->dwTotalVirtual-64*1024; | |
4778 memcpy(&cached_memstatus,lpmem,sizeof(MEMORYSTATUS)); | |
4779 cache_lastchecked = time(NULL); | |
4780 | |
4781 /* it appears some memory display programs want to divide by these values */ | |
4782 if(lpmem->dwTotalPageFile==0) | |
4783 lpmem->dwTotalPageFile++; | |
4784 | |
4785 if(lpmem->dwAvailPageFile==0) | |
4786 lpmem->dwAvailPageFile++; | |
4787 } | |
4788 | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4789 static INT WINAPI expGetThreadPriority(HANDLE hthread) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4790 { |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4791 dbgprintf("GetThreadPriority(%p)\n",hthread); |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4792 return 0; |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4793 } |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4794 |
5234 | 4795 /********************************************************************** |
4796 * SetThreadPriority [KERNEL32.@] Sets priority for thread. | |
4797 * | |
4798 * RETURNS | |
4799 * Success: TRUE | |
4800 * Failure: FALSE | |
4801 */ | |
4802 static WIN_BOOL WINAPI expSetThreadPriority( | |
4803 HANDLE hthread, /* [in] Handle to thread */ | |
4804 INT priority) /* [in] Thread priority level */ | |
4805 { | |
4806 dbgprintf("SetThreadPriority(%p,%d)\n",hthread,priority); | |
4807 return TRUE; | |
4808 } | |
4809 | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4810 static void WINAPI expTerminateProcess( DWORD process, DWORD status ) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4811 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4812 printf("EXIT - process %ld code %ld\n", process, status); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4813 exit(status); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4814 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4815 |
5234 | 4816 static void WINAPI expExitProcess( DWORD status ) |
4817 { | |
8451 | 4818 printf("EXIT - code %ld\n",status); |
5234 | 4819 exit(status); |
4820 } | |
4821 | |
4822 static INT WINAPI expMessageBoxA(HWND hWnd, LPCSTR text, LPCSTR title, UINT type){ | |
4823 printf("MSGBOX '%s' '%s' (%d)\n",text,title,type); | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
4824 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4825 if (type == MB_ICONHAND && !strlen(text) && !strlen(title)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4826 return IDIGNORE; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4827 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4828 return IDOK; |
5234 | 4829 } |
4830 | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4831 /* these are needed for mss1 */ |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4832 |
21368 | 4833 /** |
4834 * \brief this symbol is defined within exp_EH_prolog_dummy | |
4835 * \param dest jump target | |
4836 */ | |
4837 void exp_EH_prolog(void *dest); | |
30659 | 4838 void exp_EH_prolog_dummy(void); |
21368 | 4839 //! just a dummy function that acts a container for the asm section |
4840 void exp_EH_prolog_dummy(void) { | |
27754
08d18fe9da52
Change all occurrences of asm and __asm to __asm__, same as was done for FFmpeg.
diego
parents:
27444
diff
changeset
|
4841 __asm__ volatile ( |
21368 | 4842 // take care, this "function" may not change flags or |
4843 // registers besides eax (which is also why we can't use | |
4844 // exp_EH_prolog_dummy directly) | |
4845 MANGLE(exp_EH_prolog)": \n\t" | |
4846 "pop %eax \n\t" | |
4847 "push %ebp \n\t" | |
4848 "mov %esp, %ebp \n\t" | |
4849 "lea -12(%esp), %esp \n\t" | |
4850 "jmp *%eax \n\t" | |
4851 ); | |
4852 } | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4853 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4854 #include <netinet/in.h> |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4855 static WINAPI inline unsigned long int exphtonl(unsigned long int hostlong) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4856 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4857 // dbgprintf("htonl(%x) => %x\n", hostlong, htonl(hostlong)); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4858 return htonl(hostlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4859 } |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4860 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4861 static WINAPI inline unsigned long int expntohl(unsigned long int netlong) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4862 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4863 // dbgprintf("ntohl(%x) => %x\n", netlong, ntohl(netlong)); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4864 return ntohl(netlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4865 } |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4866 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4867 static char* WINAPI expSysAllocStringLen(char *pch, unsigned cch) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4868 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4869 char *str; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4870 dbgprintf("SysAllocStringLen('%s', %d)\n", pch, cch); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4871 str = malloc(cch * 2 + sizeof(unsigned) + 2); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4872 *(unsigned *)str = cch; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4873 str += sizeof(unsigned); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4874 if (pch) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4875 memcpy(str, pch, cch * 2); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4876 str[cch * 2] = 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4877 str[cch * 2 + 1] = 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4878 return str; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4879 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4880 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4881 static void WINAPI expSysFreeString(char *str) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4882 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4883 if (str) { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4884 free(str - sizeof(unsigned)); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4885 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4886 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4887 |
7386 | 4888 static void WINAPI expVariantInit(void* p) |
4889 { | |
4890 printf("InitCommonControls called!\n"); | |
4891 return; | |
4892 } | |
2779 | 4893 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4894 static int WINAPI expRegisterClassA(const void/*WNDCLASSA*/ *wc) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4895 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4896 dbgprintf("RegisterClassA(%p) => random id\n", wc); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4897 return time(NULL); /* be precise ! */ |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4898 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4899 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4900 static int WINAPI expUnregisterClassA(const char *className, HINSTANCE hInstance) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4901 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4902 dbgprintf("UnregisterClassA(%s, %p) => 0\n", className, hInstance); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4903 return 0; |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4904 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4905 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
4906 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4907 /* should be fixed bcs it's not fully strlen equivalent */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4908 static int expSysStringByteLen(void *str) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4909 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4910 dbgprintf("SysStringByteLen(%p) => %d\n", str, strlen(str)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4911 return strlen(str); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4912 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4913 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4914 static int expDirectDrawCreate(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4915 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4916 dbgprintf("DirectDrawCreate(...) => NULL\n"); |
8451 | 4917 return 0; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4918 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4919 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4920 #if 1 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4921 typedef struct tagPALETTEENTRY { |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4922 BYTE peRed; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4923 BYTE peGreen; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4924 BYTE peBlue; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4925 BYTE peFlags; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4926 } PALETTEENTRY; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4927 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4928 typedef struct tagLOGPALETTE { |
30790
9f30c9cb599b
Fix crashes in CreatePalette by fixing the LOGPALETTE struct.
sesse
parents:
30789
diff
changeset
|
4929 WORD palVersion; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4930 WORD palNumEntries; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4931 PALETTEENTRY palPalEntry[1]; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4932 } LOGPALETTE; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4933 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4934 static HPALETTE WINAPI expCreatePalette(CONST LOGPALETTE *lpgpl) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4935 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4936 HPALETTE test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4937 int i; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4938 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4939 dbgprintf("CreatePalette(%x) => NULL\n", lpgpl); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4940 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4941 i = sizeof(LOGPALETTE)+((lpgpl->palNumEntries-1)*sizeof(PALETTEENTRY)); |
30702 | 4942 test = malloc(i); |
8451 | 4943 memcpy((void *)test, lpgpl, i); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4944 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4945 return test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4946 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4947 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4948 static int expCreatePalette(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4949 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4950 dbgprintf("CreatePalette(...) => NULL\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4951 return NULL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4952 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4953 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4954 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4955 static int WINAPI expGetClientRect(HWND win, RECT *r) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4956 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4957 dbgprintf("GetClientRect(0x%x, 0x%x) => 1\n", win, r); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4958 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4959 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4960 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4961 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4962 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4963 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4964 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4965 #if 0 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4966 typedef struct tagPOINT { |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4967 LONG x; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4968 LONG y; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4969 } POINT, *PPOINT; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4970 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4971 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4972 static int WINAPI expClientToScreen(HWND win, POINT *p) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4973 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4974 dbgprintf("ClientToScreen(0x%x, 0x%x = %d,%d) => 1\n", win, p, p->x, p->y); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4975 p->x = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4976 p->y = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4977 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4978 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4979 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4980 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4981 /* for m3jpeg */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4982 static int WINAPI expSetThreadIdealProcessor(HANDLE thread, int proc) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4983 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4984 dbgprintf("SetThreadIdealProcessor(0x%x, %x) => 0\n", thread, proc); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4985 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4986 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4987 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4988 static int WINAPI expMessageBeep(int type) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4989 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4990 dbgprintf("MessageBeep(%d) => 1\n", type); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4991 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4992 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4993 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4994 static int WINAPI expDialogBoxParamA(void *inst, const char *name, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4995 HWND parent, void *dialog_func, void *init_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4996 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4997 dbgprintf("DialogBoxParamA(0x%x, 0x%x = %s, 0x%x, 0x%x, 0x%x) => 0x42424242\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4998 inst, name, name, parent, dialog_func, init_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4999 return 0x42424242; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5000 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5001 |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5002 static void WINAPI expRegisterClipboardFormatA(const char *name) { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5003 dbgprintf("RegisterClipboardFormatA(0x%x = %s)\n", name, name); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5004 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5005 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5006 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5007 static void *exprealloc(void *ptr, size_t size) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5008 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5009 dbgprintf("realloc(0x%x, %x)\n", ptr, size); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5010 if (!ptr) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5011 return my_mreq(size,0); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5012 else |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
5013 return my_realloc(ptr, size); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5014 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5015 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5016 /* Fake GetOpenFileNameA from comdlg32.dll for ViVD codec */ |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5017 static WIN_BOOL WINAPI expGetOpenFileNameA(/*LPOPENFILENAMEA*/ void* lpfn) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5018 { |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5019 return 1; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5020 } |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5021 |
31824 | 5022 static const char * WINAPI expPathFindExtensionA(const char *path) { |
5023 const char *ext; | |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5024 if (!path) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5025 ext = NULL; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5026 else { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5027 ext = strrchr(path, '.'); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5028 if (!ext) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5029 ext = &path[strlen(path)]; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5030 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5031 dbgprintf("PathFindExtensionA(0x%x = %s) => 0x%x, %s\n", path, path, ext, ext); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5032 return ext; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5033 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5034 |
31824 | 5035 static const char * WINAPI expPathFindFileNameA(const char *path) { |
5036 const char *name; | |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5037 if (!path || strlen(path) < 2) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5038 name = path; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5039 else { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5040 name = strrchr(path - 1, '\\'); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5041 if (!name) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5042 name = path; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5043 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5044 dbgprintf("PathFindFileNameA(0x%x = %s) => 0x%x, %s\n", path, path, name, name); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5045 return name; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5046 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5047 |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5048 static double expfloor(double x) |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5049 { |
32352
76f94c00a69f
1000l, %lf is not valid format string for printf (only for scanf) and actually
reimar
parents:
32049
diff
changeset
|
5050 dbgprintf("floor(%f)\n", x); |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5051 return floor(x); |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5052 } |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5053 |
13751 | 5054 #define FPU_DOUBLE(var) double var; \ |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
5055 __asm__ volatile( "fstpl %0;fwait" : "=m" (var) : ) |
13751 | 5056 |
5057 static double exp_CIcos(void) | |
5058 { | |
5059 FPU_DOUBLE(x); | |
5060 | |
32352
76f94c00a69f
1000l, %lf is not valid format string for printf (only for scanf) and actually
reimar
parents:
32049
diff
changeset
|
5061 dbgprintf("_CIcos(%f)\n", x); |
13751 | 5062 return cos(x); |
5063 } | |
5064 | |
5065 static double exp_CIsin(void) | |
5066 { | |
5067 FPU_DOUBLE(x); | |
5068 | |
32352
76f94c00a69f
1000l, %lf is not valid format string for printf (only for scanf) and actually
reimar
parents:
32049
diff
changeset
|
5069 dbgprintf("_CIsin(%f)\n", x); |
13751 | 5070 return sin(x); |
5071 } | |
5072 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5073 static double exp_CIsqrt(void) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5074 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5075 FPU_DOUBLE(x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5076 |
32352
76f94c00a69f
1000l, %lf is not valid format string for printf (only for scanf) and actually
reimar
parents:
32049
diff
changeset
|
5077 dbgprintf("_CIsqrt(%f)\n", x); |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5078 return sqrt(x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5079 } |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5080 |
17071 | 5081 /* Needed by rp8 sipr decoder */ |
5082 static LPSTR WINAPI expCharNextA(LPCSTR ptr) | |
5083 { | |
5084 if (!*ptr) return (LPSTR)ptr; | |
5085 // dbgprintf("CharNextA(0x%08x), %s\n", ptr, ptr); | |
5086 return (LPSTR)(ptr + 1); | |
5087 } | |
5088 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5089 // Fake implementation, needed by wvc1dmod.dll |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5090 static int WINAPI expPropVariantClear(void *pvar) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5091 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5092 // dbgprintf("PropVariantclear (0x%08x), %s\n", ptr, ptr); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5093 return 1; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5094 } |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5095 |
20652
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5096 // This define is fake, the real thing is a struct |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5097 #define LPDEVMODEA void* |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5098 // Dummy implementation, always return 1 |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5099 // Required for frapsvid.dll 2.8.1, return value does not matter |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5100 static WIN_BOOL WINAPI expEnumDisplaySettingsA(LPCSTR name ,DWORD n, |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5101 LPDEVMODEA devmode) |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5102 { |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5103 dbgprintf("EnumDisplaySettingsA (dummy) => 1\n"); |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5104 return 1; |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5105 } |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5106 |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5107 // Fake implementation of _decode_pointer from msvcr80.dll, needed by sirenacm.dll |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5108 // NOTE: undocumented function, probably the declaration is not right |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5109 static int exp_decode_pointer(void *ptr) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5110 { |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5111 dbgprintf("_decode_pointer (0x%08x)\n", ptr); |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5112 return 0; |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5113 } |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5114 |
26444
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5115 /* Fake implementation of sdt::_Lockit::_Lockit(void) from msvcp60.dll |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5116 Needed by SCLS.DLL */ |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5117 static int exp_0Lockit_dummy(void) |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5118 { |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5119 dbgprintf("0Lockit_dummy (??0_Lockit@std@@QAE@XZ)\n"); |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5120 return 0; |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5121 } |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5122 |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5123 /* Fake implementation of sdt::_Lockit::~_Lockit(void) from msvcp60.dll |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5124 Needed by SCLS.DLL */ |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5125 static int exp_1Lockit_dummy(void) |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5126 { |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5127 dbgprintf("1Lockit_dummy (??1_Lockit@std@@QAE@XZ)\n"); |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5128 return 0; |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5129 } |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5130 |
29725
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5131 static void * WINAPI expEncodePointer(void *p) |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5132 { |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5133 return p; |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5134 } |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5135 |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5136 static void * WINAPI expDecodePointer(void *p) |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5137 { |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5138 return p; |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5139 } |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5140 |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5141 static DWORD WINAPI expGetThreadLocale(void) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5142 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5143 return 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5144 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5145 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5146 /** |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5147 * Very incomplete implementation, return an error for almost all cases. |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5148 */ |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5149 static DWORD WINAPI expGetLocaleInfoA(DWORD locale, DWORD lctype, char* lpLCData, int cchData) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5150 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5151 if (lctype == 0x1004) { // LOCALE_IDEFAULTANSICODEPAGE |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5152 if (cchData < 4) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5153 return cchData == 0 ? 4 : 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5154 strcpy(lpLCData, "437"); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5155 return 4; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5156 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5157 return 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5158 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5159 |
1 | 5160 struct exports |
5161 { | |
5162 char name[64]; | |
5163 int id; | |
5164 void* func; | |
5165 }; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5166 struct libs |
1 | 5167 { |
5168 char name[64]; | |
5169 int length; | |
31819 | 5170 const struct exports* exps; |
1 | 5171 }; |
5172 | |
5173 #define FF(X,Y) \ | |
3465 | 5174 {#X, Y, (void*)exp##X}, |
5175 | |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5176 #define UNDEFF(X, Y) \ |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5177 {#X, Y, (void*)-1}, |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5178 |
31819 | 5179 static const struct exports exp_kernel32[]= |
3465 | 5180 { |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5181 FF(GetVolumeInformationA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5182 FF(GetDriveTypeA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5183 FF(GetLogicalDriveStringsA,-1) |
3465 | 5184 FF(IsBadWritePtr, 357) |
5185 FF(IsBadReadPtr, 354) | |
5186 FF(IsBadStringPtrW, -1) | |
5187 FF(IsBadStringPtrA, -1) | |
5188 FF(DisableThreadLibraryCalls, -1) | |
5189 FF(CreateThread, -1) | |
30819 | 5190 FF(ResumeThread, -1) |
3465 | 5191 FF(CreateEventA, -1) |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5192 FF(CreateEventW, -1) |
3465 | 5193 FF(SetEvent, -1) |
5194 FF(ResetEvent, -1) | |
5195 FF(WaitForSingleObject, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5196 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5197 FF(WaitForMultipleObjects, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5198 FF(ExitThread, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5199 #endif |
3465 | 5200 FF(GetSystemInfo, -1) |
5201 FF(GetVersion, 332) | |
5202 FF(HeapCreate, 461) | |
5203 FF(HeapAlloc, -1) | |
5204 FF(HeapDestroy, -1) | |
5205 FF(HeapFree, -1) | |
5206 FF(HeapSize, -1) | |
5207 FF(HeapReAlloc,-1) | |
5208 FF(GetProcessHeap, -1) | |
5209 FF(VirtualAlloc, -1) | |
5210 FF(VirtualFree, -1) | |
5211 FF(InitializeCriticalSection, -1) | |
30598
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
5212 FF(InitializeCriticalSectionAndSpinCount, -1) |
3465 | 5213 FF(EnterCriticalSection, -1) |
5214 FF(LeaveCriticalSection, -1) | |
5215 FF(DeleteCriticalSection, -1) | |
5216 FF(TlsAlloc, -1) | |
5217 FF(TlsFree, -1) | |
5218 FF(TlsGetValue, -1) | |
5219 FF(TlsSetValue, -1) | |
5220 FF(GetCurrentThreadId, -1) | |
5221 FF(GetCurrentProcess, -1) | |
5222 FF(LocalAlloc, -1) | |
5223 FF(LocalReAlloc,-1) | |
5224 FF(LocalLock, -1) | |
5225 FF(GlobalAlloc, -1) | |
5226 FF(GlobalReAlloc, -1) | |
5227 FF(GlobalLock, -1) | |
5228 FF(GlobalSize, -1) | |
5229 FF(MultiByteToWideChar, 427) | |
5230 FF(WideCharToMultiByte, -1) | |
5231 FF(GetVersionExA, -1) | |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5232 FF(GetVersionExW, -1) |
3465 | 5233 FF(CreateSemaphoreA, -1) |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5234 FF(CreateSemaphoreW, -1) |
3465 | 5235 FF(QueryPerformanceCounter, -1) |
5236 FF(QueryPerformanceFrequency, -1) | |
5237 FF(LocalHandle, -1) | |
5238 FF(LocalUnlock, -1) | |
5239 FF(LocalFree, -1) | |
5240 FF(GlobalHandle, -1) | |
5241 FF(GlobalUnlock, -1) | |
5242 FF(GlobalFree, -1) | |
5243 FF(LoadResource, -1) | |
5244 FF(ReleaseSemaphore, -1) | |
30811 | 5245 FF(CreateMutexA, -1) |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5246 FF(CreateMutexW, -1) |
30811 | 5247 FF(ReleaseMutex, -1) |
30819 | 5248 FF(SignalObjectAndWait, -1) |
3465 | 5249 FF(FindResourceA, -1) |
5250 FF(LockResource, -1) | |
5251 FF(FreeResource, -1) | |
5252 FF(SizeofResource, -1) | |
5253 FF(CloseHandle, -1) | |
5254 FF(GetCommandLineA, -1) | |
5255 FF(GetEnvironmentStringsW, -1) | |
5256 FF(FreeEnvironmentStringsW, -1) | |
5257 FF(FreeEnvironmentStringsA, -1) | |
5258 FF(GetEnvironmentStrings, -1) | |
5259 FF(GetStartupInfoA, -1) | |
5260 FF(GetStdHandle, -1) | |
5261 FF(GetFileType, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5262 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5263 FF(GetFileAttributesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5264 #endif |
3465 | 5265 FF(SetHandleCount, -1) |
5266 FF(GetACP, -1) | |
5267 FF(GetModuleFileNameA, -1) | |
5268 FF(SetUnhandledExceptionFilter, -1) | |
5269 FF(LoadLibraryA, -1) | |
5270 FF(GetProcAddress, -1) | |
5271 FF(FreeLibrary, -1) | |
5272 FF(CreateFileMappingA, -1) | |
5273 FF(OpenFileMappingA, -1) | |
5274 FF(MapViewOfFile, -1) | |
5275 FF(UnmapViewOfFile, -1) | |
5276 FF(Sleep, -1) | |
5277 FF(GetModuleHandleA, -1) | |
30597 | 5278 FF(GetModuleHandleW, -1) |
3465 | 5279 FF(GetProfileIntA, -1) |
5280 FF(GetPrivateProfileIntA, -1) | |
5281 FF(GetPrivateProfileStringA, -1) | |
5282 FF(WritePrivateProfileStringA, -1) | |
5283 FF(GetLastError, -1) | |
5284 FF(SetLastError, -1) | |
5285 FF(InterlockedIncrement, -1) | |
5286 FF(InterlockedDecrement, -1) | |
5287 FF(GetTimeZoneInformation, -1) | |
5288 FF(OutputDebugStringA, -1) | |
5289 FF(GetLocalTime, -1) | |
5290 FF(GetSystemTime, -1) | |
7386 | 5291 FF(GetSystemTimeAsFileTime, -1) |
3465 | 5292 FF(GetEnvironmentVariableA, -1) |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
5293 FF(SetEnvironmentVariableA, -1) |
3465 | 5294 FF(RtlZeroMemory,-1) |
5295 FF(RtlMoveMemory,-1) | |
5296 FF(RtlFillMemory,-1) | |
5297 FF(GetTempPathA,-1) | |
5298 FF(FindFirstFileA,-1) | |
5299 FF(FindNextFileA,-1) | |
5300 FF(FindClose,-1) | |
5301 FF(FileTimeToLocalFileTime,-1) | |
5302 FF(DeleteFileA,-1) | |
5303 FF(ReadFile,-1) | |
5304 FF(WriteFile,-1) | |
5305 FF(SetFilePointer,-1) | |
5306 FF(GetTempFileNameA,-1) | |
5307 FF(CreateFileA,-1) | |
5308 FF(GetSystemDirectoryA,-1) | |
5309 FF(GetWindowsDirectoryA,-1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5310 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5311 FF(GetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5312 FF(SetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5313 FF(CreateDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5314 #endif |
5234 | 5315 FF(GetShortPathNameA,-1) |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
5316 FF(GetFullPathNameA,-1) |
3465 | 5317 FF(SetErrorMode, -1) |
5318 FF(IsProcessorFeaturePresent, -1) | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5319 FF(IsDebuggerPresent, -1) |
3465 | 5320 FF(GetProcessAffinityMask, -1) |
5321 FF(InterlockedExchange, -1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5322 FF(InterlockedCompareExchange, -1) |
3465 | 5323 FF(MulDiv, -1) |
5324 FF(lstrcmpiA, -1) | |
5325 FF(lstrlenA, -1) | |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5326 FF(lstrlenW, -1) |
3465 | 5327 FF(lstrcpyA, -1) |
5328 FF(lstrcatA, -1) | |
5329 FF(lstrcpynA,-1) | |
5330 FF(GetProcessVersion,-1) | |
5331 FF(GetCurrentThread,-1) | |
5332 FF(GetOEMCP,-1) | |
5333 FF(GetCPInfo,-1) | |
5334 FF(DuplicateHandle,-1) | |
5335 FF(GetTickCount, -1) | |
5336 FF(SetThreadAffinityMask,-1) | |
5234 | 5337 FF(GetCurrentProcessId,-1) |
5338 FF(GlobalMemoryStatus,-1) | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
5339 FF(GetThreadPriority,-1) |
5234 | 5340 FF(SetThreadPriority,-1) |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5341 FF(TerminateProcess,-1) |
5234 | 5342 FF(ExitProcess,-1) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5343 {"LoadLibraryExA", -1, (void*)&LoadLibraryExA}, |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5344 FF(SetThreadIdealProcessor,-1) |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5345 FF(SetProcessAffinityMask, -1) |
29725
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5346 FF(EncodePointer, -1) |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5347 FF(DecodePointer, -1) |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5348 FF(GetThreadLocale, -1) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5349 FF(GetLocaleInfoA, -1) |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5350 UNDEFF(FlsAlloc, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5351 UNDEFF(FlsGetValue, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5352 UNDEFF(FlsSetValue, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5353 UNDEFF(FlsFree, -1) |
1 | 5354 }; |
5355 | |
31819 | 5356 static const struct exports exp_msvcrt[]={ |
3465 | 5357 FF(malloc, -1) |
5358 FF(_initterm, -1) | |
7386 | 5359 FF(__dllonexit, -1) |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5360 FF(_snprintf,-1) |
3465 | 5361 FF(free, -1) |
5362 {"??3@YAXPAX@Z", -1, expdelete}, | |
5363 {"??2@YAPAXI@Z", -1, expnew}, | |
5364 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
5365 {"_winver",-1,(void*)&_winver}, |
3465 | 5366 FF(strrchr, -1) |
5367 FF(strchr, -1) | |
5368 FF(strlen, -1) | |
5369 FF(strcpy, -1) | |
9397 | 5370 FF(strncpy, -1) |
3465 | 5371 FF(wcscpy, -1) |
5372 FF(strcmp, -1) | |
5373 FF(strncmp, -1) | |
5374 FF(strcat, -1) | |
5375 FF(_stricmp,-1) | |
5376 FF(_strdup,-1) | |
5377 FF(_setjmp3,-1) | |
5378 FF(isalnum, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5379 FF(isspace, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5380 FF(isalpha, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5381 FF(isdigit, -1) |
3465 | 5382 FF(memmove, -1) |
5383 FF(memcmp, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5384 FF(memset, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5385 FF(memcpy, -1) |
3465 | 5386 FF(time, -1) |
5387 FF(rand, -1) | |
5388 FF(srand, -1) | |
5389 FF(log10, -1) | |
5390 FF(pow, -1) | |
5391 FF(cos, -1) | |
5392 FF(_ftol,-1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5393 FF(_CIpow,-1) |
13751 | 5394 FF(_CIcos,-1) |
5395 FF(_CIsin,-1) | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5396 FF(_CIsqrt,-1) |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5397 FF(ldexp,-1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5398 FF(frexp,-1) |
3465 | 5399 FF(sprintf,-1) |
5400 FF(sscanf,-1) | |
5401 FF(fopen,-1) | |
5402 FF(fprintf,-1) | |
5403 FF(printf,-1) | |
5404 FF(getenv,-1) | |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5405 FF(floor,-1) |
15474 | 5406 /* needed by frapsvid.dll */ |
5407 {"strstr",-1,(char *)&strstr}, | |
5408 {"qsort",-1,(void *)&qsort}, | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5409 FF(_EH_prolog,-1) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5410 FF(calloc,-1) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5411 {"ceil",-1,(void*)&ceil}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5412 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5413 {"clock",-1,(void*)&clock}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5414 {"memchr",-1,(void*)&memchr}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5415 {"vfprintf",-1,(void*)&vfprintf}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5416 // {"realloc",-1,(void*)&realloc}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5417 FF(realloc,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5418 {"puts",-1,(void*)&puts} |
1 | 5419 }; |
31819 | 5420 static const struct exports exp_winmm[]={ |
3465 | 5421 FF(GetDriverModuleHandle, -1) |
5422 FF(timeGetTime, -1) | |
5423 FF(DefDriverProc, -1) | |
5424 FF(OpenDriverA, -1) | |
5425 FF(OpenDriver, -1) | |
5234 | 5426 FF(timeGetDevCaps, -1) |
5427 FF(timeBeginPeriod, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5428 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5429 FF(timeEndPeriod, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5430 FF(waveOutGetNumDevs, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5431 #endif |
1 | 5432 }; |
31819 | 5433 static const struct exports exp_psapi[]={ |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5434 FF(GetModuleBaseNameA, -1) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5435 }; |
31819 | 5436 static const struct exports exp_user32[]={ |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5437 FF(LoadIconA,-1) |
3465 | 5438 FF(LoadStringA, -1) |
5439 FF(wsprintfA, -1) | |
5440 FF(GetDC, -1) | |
5441 FF(GetDesktopWindow, -1) | |
5442 FF(ReleaseDC, -1) | |
5443 FF(IsRectEmpty, -1) | |
5444 FF(LoadCursorA,-1) | |
5445 FF(SetCursor,-1) | |
5446 FF(GetCursorPos,-1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5447 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5448 FF(ShowCursor,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5449 #endif |
3465 | 5450 FF(RegisterWindowMessageA,-1) |
5451 FF(GetSystemMetrics,-1) | |
5452 FF(GetSysColor,-1) | |
5453 FF(GetSysColorBrush,-1) | |
5454 FF(GetWindowDC, -1) | |
5455 FF(DrawTextA, -1) | |
5234 | 5456 FF(MessageBoxA, -1) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
5457 FF(RegisterClassA, -1) |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
5458 FF(UnregisterClassA, -1) |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5459 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5460 FF(GetWindowRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5461 FF(MonitorFromWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5462 FF(MonitorFromRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5463 FF(MonitorFromPoint, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5464 FF(EnumDisplayMonitors, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5465 FF(GetMonitorInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5466 FF(EnumDisplayDevicesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5467 FF(GetClientRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5468 FF(ClientToScreen, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5469 FF(IsWindowVisible, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5470 FF(GetActiveWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5471 FF(GetClassNameA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5472 FF(GetClassInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5473 FF(GetWindowLongA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5474 FF(EnumWindows, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5475 FF(GetWindowThreadProcessId, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5476 FF(CreateWindowExA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5477 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5478 FF(MessageBeep, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5479 FF(DialogBoxParamA, -1) |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5480 FF(RegisterClipboardFormatA, -1) |
17071 | 5481 FF(CharNextA, -1) |
20652
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5482 FF(EnumDisplaySettingsA, -1) |
1 | 5483 }; |
31819 | 5484 static const struct exports exp_advapi32[]={ |
3465 | 5485 FF(RegCloseKey, -1) |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
5486 FF(RegCreateKeyA, -1) |
3465 | 5487 FF(RegCreateKeyExA, -1) |
5488 FF(RegEnumKeyExA, -1) | |
5489 FF(RegEnumValueA, -1) | |
5490 FF(RegOpenKeyA, -1) | |
5491 FF(RegOpenKeyExA, -1) | |
5492 FF(RegQueryValueExA, -1) | |
5493 FF(RegSetValueExA, -1) | |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
5494 FF(RegQueryInfoKeyA, -1) |
1 | 5495 }; |
31819 | 5496 static const struct exports exp_gdi32[]={ |
3465 | 5497 FF(CreateCompatibleDC, -1) |
5498 FF(CreateFontA, -1) | |
5499 FF(DeleteDC, -1) | |
5500 FF(DeleteObject, -1) | |
5501 FF(GetDeviceCaps, -1) | |
5502 FF(GetSystemPaletteEntries, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5503 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5504 FF(CreatePalette, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5505 FF(GetObjectA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5506 FF(CreateRectRgn, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5507 #endif |
1 | 5508 }; |
31819 | 5509 static const struct exports exp_version[]={ |
3465 | 5510 FF(GetFileVersionInfoSizeA, -1) |
1 | 5511 }; |
31819 | 5512 static const struct exports exp_ole32[]={ |
3465 | 5513 FF(CoCreateFreeThreadedMarshaler,-1) |
5514 FF(CoCreateInstance, -1) | |
5515 FF(CoInitialize, -1) | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
5516 FF(CoInitializeEx, -1) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
5517 FF(CoUninitialize, -1) |
3465 | 5518 FF(CoTaskMemAlloc, -1) |
5519 FF(CoTaskMemFree, -1) | |
5520 FF(StringFromGUID2, -1) | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5521 FF(PropVariantClear, -1) |
128 | 5522 }; |
3465 | 5523 // do we really need crtdll ??? |
5524 // msvcrt is the correct place probably... | |
31819 | 5525 static const struct exports exp_crtdll[]={ |
3465 | 5526 FF(memcpy, -1) |
5527 FF(wcscpy, -1) | |
130 | 5528 }; |
31819 | 5529 static const struct exports exp_comctl32[]={ |
3465 | 5530 FF(StringFromGUID2, -1) |
5531 FF(InitCommonControls, 17) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5532 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5533 FF(CreateUpDownControl, 16) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5534 #endif |
2069 | 5535 }; |
31819 | 5536 static const struct exports exp_wsock32[]={ |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5537 FF(htonl,8) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5538 FF(ntohl,14) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5539 }; |
31819 | 5540 static const struct exports exp_msdmo[]={ |
3465 | 5541 FF(memcpy, -1) // just test |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5542 FF(MoCopyMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5543 FF(MoCreateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5544 FF(MoDeleteMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5545 FF(MoDuplicateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5546 FF(MoFreeMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5547 FF(MoInitMediaType, -1) |
7386 | 5548 }; |
31819 | 5549 static const struct exports exp_oleaut32[]={ |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5550 FF(SysAllocStringLen, 4) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5551 FF(SysFreeString, 6) |
7386 | 5552 FF(VariantInit, 8) |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5553 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5554 FF(SysStringByteLen, 149) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5555 #endif |
3465 | 5556 }; |
6359 | 5557 |
5558 /* realplayer8: | |
5559 DLL Name: PNCRT.dll | |
5560 vma: Hint/Ord Member-Name | |
5561 22ff4 615 free | |
5562 2302e 250 _ftol | |
5563 22fea 666 malloc | |
5564 2303e 609 fprintf | |
5565 2305e 167 _adjust_fdiv | |
5566 23052 280 _initterm | |
5567 | |
5568 22ffc 176 _beginthreadex | |
5569 23036 284 _iob | |
5570 2300e 85 __CxxFrameHandler | |
5571 23022 411 _purecall | |
5572 */ | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5573 #ifdef REALPLAYER |
31819 | 5574 static const struct exports exp_pncrt[]={ |
6359 | 5575 FF(malloc, -1) // just test |
5576 FF(free, -1) // just test | |
5577 FF(fprintf, -1) // just test | |
5578 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
5579 FF(_ftol,-1) | |
5580 FF(_initterm, -1) | |
9397 | 5581 {"??3@YAXPAX@Z", -1, expdelete}, |
5582 {"??2@YAPAXI@Z", -1, expnew}, | |
5583 FF(__dllonexit, -1) | |
5584 FF(strncpy, -1) | |
5585 FF(_CIpow,-1) | |
5586 FF(calloc,-1) | |
5587 FF(memmove, -1) | |
17072
4c50b2f11ad8
export ldexp() and frexp() in pncrt, they are needed by rp8 sipr dll
rtognimp
parents:
17071
diff
changeset
|
5588 FF(ldexp, -1) |
4c50b2f11ad8
export ldexp() and frexp() in pncrt, they are needed by rp8 sipr dll
rtognimp
parents:
17071
diff
changeset
|
5589 FF(frexp, -1) |
6359 | 5590 }; |
7386 | 5591 #endif |
3465 | 5592 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5593 #ifdef CONFIG_QTX_CODECS |
31819 | 5594 static const struct exports exp_ddraw[]={ |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5595 FF(DirectDrawCreate, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5596 }; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5597 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5598 |
31819 | 5599 static const struct exports exp_comdlg32[]={ |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5600 FF(GetOpenFileNameA, -1) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5601 }; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5602 |
31819 | 5603 static const struct exports exp_shlwapi[]={ |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5604 FF(PathFindExtensionA, -1) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5605 FF(PathFindFileNameA, -1) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5606 }; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5607 |
31819 | 5608 static const struct exports exp_msvcr80[]={ |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5609 FF(_CIpow,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5610 FF(_CIsin,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5611 FF(_CIcos,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5612 FF(_CIsqrt,-1) |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5613 FF(memcpy,-1) |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5614 FF(memset,-1) |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5615 FF(sprintf,-1) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5616 FF(strncpy,-1) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5617 FF(fopen,-1) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5618 FF(malloc,-1) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5619 FF(free,-1) |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5620 FF(_initterm_e, -1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5621 FF(_initterm, -1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5622 FF(_decode_pointer, -1) |
33861
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5623 |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5624 // For CFDecode2.ax |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5625 {"_aligned_free",-1,(void*)expfree}, |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5626 {"_aligned_malloc",-1,(void*)expmalloc}, |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5627 FF(_splitpath,-1) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5628 FF(_mbsupr,-1) |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5629 {"_mbscmp", -1, (void*)strcmp}, |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5630 {"clock",-1,(void*)&clock}, |
bf10aa37e4f5
Add some additional function/hacks needed for newer CFDecode2.ax versions.
reimar
parents:
33412
diff
changeset
|
5631 FF(_time64,-1) |
29640 | 5632 /* needed by KGV1-VFW.dll */ |
5633 {"??2@YAPAXI@Z", -1, expnew}, | |
5634 {"??3@YAXPAX@Z", -1, expdelete} | |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5635 }; |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5636 |
31819 | 5637 static const struct exports exp_msvcp60[]={ |
26444
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5638 {"??0_Lockit@std@@QAE@XZ", -1, exp_0Lockit_dummy}, |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5639 {"??1_Lockit@std@@QAE@XZ", -1, exp_1Lockit_dummy} |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5640 }; |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5641 |
31827 | 5642 static const struct exports exp_msvcr100[]={ |
5643 FF(memcpy, -1) | |
5644 FF(memset, -1) | |
5645 FF(_initterm_e, -1) | |
5646 FF(_initterm, -1) | |
5647 {"??2@YAPAXI@Z", -1, expnew}, | |
5648 {"??3@YAXPAX@Z", -1, expdelete} | |
5649 }; | |
5650 | |
1 | 5651 #define LL(X) \ |
3465 | 5652 {#X".dll", sizeof(exp_##X)/sizeof(struct exports), exp_##X}, |
1 | 5653 |
31819 | 5654 static const struct libs libraries[]={ |
3465 | 5655 LL(kernel32) |
5656 LL(msvcrt) | |
5657 LL(winmm) | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5658 LL(psapi) |
3465 | 5659 LL(user32) |
5660 LL(advapi32) | |
5661 LL(gdi32) | |
5662 LL(version) | |
5663 LL(ole32) | |
7386 | 5664 LL(oleaut32) |
3465 | 5665 LL(crtdll) |
5666 LL(comctl32) | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5667 LL(wsock32) |
3465 | 5668 LL(msdmo) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5669 #ifdef REALPLAYER |
6359 | 5670 LL(pncrt) |
7386 | 5671 #endif |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5672 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5673 LL(ddraw) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5674 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5675 LL(comdlg32) |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5676 LL(shlwapi) |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5677 LL(msvcr80) |
26444
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5678 LL(msvcp60) |
31827 | 5679 LL(msvcr100) |
1 | 5680 }; |
7386 | 5681 |
22406
9977fe541c4d
The original asm code for the stub returned 0, restore that behaviour.
reimar
parents:
22367
diff
changeset
|
5682 static WIN_BOOL WINAPI ext_stubs(void) |
3465 | 5683 { |
30278 | 5684 // NOTE! these magic values will be replaced at runtime, make sure |
5685 // add_stub can still find them if you change them. | |
30225 | 5686 volatile int idx = 0x0deadabc; |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5687 // make sure gcc does not do eip-relative call or something like that |
30226 | 5688 void (* volatile my_printf)(char *, char *) = (void *)0xdeadfbcd; |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5689 my_printf("Called unk_%s\n", export_names[idx]); |
22406
9977fe541c4d
The original asm code for the stub returned 0, restore that behaviour.
reimar
parents:
22367
diff
changeset
|
5690 return 0; |
3465 | 5691 } |
5692 | |
21366
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5693 #define MAX_STUB_SIZE 0x60 |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5694 #define MAX_NUM_STUBS 200 |
7386 | 5695 static int pos=0; |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5696 static char *extcode = NULL; |
3465 | 5697 |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5698 static void* add_stub(void) |
3465 | 5699 { |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5700 int i; |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5701 int found = 0; |
7386 | 5702 // generated code in runtime! |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5703 char* answ; |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5704 if (!extcode) |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5705 extcode = mmap_anon(NULL, MAX_NUM_STUBS * MAX_STUB_SIZE, |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5706 PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE, 0); |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5707 answ = extcode + pos * MAX_STUB_SIZE; |
21366
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5708 if (pos >= MAX_NUM_STUBS) { |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5709 printf("too many stubs, expect crash\n"); |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5710 return NULL; |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5711 } |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5712 memcpy(answ, ext_stubs, MAX_STUB_SIZE); |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5713 for (i = 0; i < MAX_STUB_SIZE - 3; i++) { |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5714 int *magic = (int *)(answ + i); |
30277
e15646d685c5
100l, forgot to change the "magic" value in the stub also in the place replacing it.
reimar
parents:
30226
diff
changeset
|
5715 if (*magic == 0x0deadabc) { |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5716 *magic = pos; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5717 found |= 1; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5718 } |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5719 if (*magic == 0xdeadfbcd) { |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5720 *magic = (intptr_t)printf; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5721 found |= 2; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5722 } |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5723 } |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5724 if (found != 3) { |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5725 printf("magic code not found in ext_subs, expect crash\n"); |
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5726 return NULL; |
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5727 } |
3465 | 5728 pos++; |
5729 return (void*)answ; | |
5730 } | |
2069 | 5731 |
1 | 5732 void* LookupExternal(const char* library, int ordinal) |
5733 { | |
5734 int i,j; | |
5735 if(library==0) | |
5736 { | |
5737 printf("ERROR: library=0\n"); | |
5738 return (void*)ext_unknown; | |
5739 } | |
3465 | 5740 // printf("%x %x\n", &unk_exp1, &unk_exp2); |
1 | 5741 |
13379 | 5742 dbgprintf("External func %s:%d\n", library, ordinal); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5743 |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5744 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5745 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5746 if(strcasecmp(library, libraries[i].name)) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5747 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5748 for(j=0; j<libraries[i].length; j++) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5749 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5750 if(ordinal!=libraries[i].exps[j].id) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5751 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5752 //printf("Hit: 0x%p\n", libraries[i].exps[j].func); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5753 return libraries[i].exps[j].func; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5754 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5755 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5756 |
9592
b20b0c80298b
Fix for truespeech dll, patch by <dimakar(at)yahoo.com>
rtognimp
parents:
9397
diff
changeset
|
5757 #ifndef LOADLIB_TRY_NATIVE |
9897 | 5758 /* hack for truespeech and vssh264*/ |
13748 | 5759 if (!strcmp(library, "tsd32.dll") || !strcmp(library,"vssh264dec.dll") || !strcmp(library,"LCMW2.dll") || !strcmp(library,"VDODEC32.dll")) |
9592
b20b0c80298b
Fix for truespeech dll, patch by <dimakar(at)yahoo.com>
rtognimp
parents:
9397
diff
changeset
|
5760 #endif |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5761 /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5762 { |
7386 | 5763 int hand; |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5764 WINE_MODREF *wm; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5765 void *func; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5766 |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5767 hand = LoadLibraryA(library); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5768 if (!hand) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5769 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5770 wm = MODULE32_LookupHMODULE(hand); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5771 if (!wm) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5772 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5773 FreeLibrary(hand); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5774 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5775 } |
7386 | 5776 func = PE_FindExportedFunction(wm, (LPCSTR) ordinal, 0); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5777 if (!func) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5778 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5779 printf("No such ordinal in external dll\n"); |
7386 | 5780 FreeLibrary((int)hand); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5781 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5782 } |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5783 |
7386 | 5784 printf("External dll loaded (offset: 0x%x, func: %p)\n", |
5785 hand, func); | |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5786 return func; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5787 } |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5788 |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5789 no_dll: |
1 | 5790 if(pos>150)return 0; |
30596
8806ec11a250
Use snprintf to ensure we do not write outside the buffer bounds
reimar
parents:
30503
diff
changeset
|
5791 snprintf(export_names[pos], sizeof(export_names[pos]), "%s:%d", library, ordinal); |
7386 | 5792 return add_stub(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5793 } |
1 | 5794 |
5795 void* LookupExternalByName(const char* library, const char* name) | |
5796 { | |
5797 int i,j; | |
3465 | 5798 // return (void*)ext_unknown; |
1 | 5799 if(library==0) |
5800 { | |
5801 printf("ERROR: library=0\n"); | |
5802 return (void*)ext_unknown; | |
5803 } | |
22476 | 5804 if((unsigned long)name<=0xffff) |
1 | 5805 { |
22476 | 5806 return LookupExternal(library, (int)name); |
1 | 5807 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5808 dbgprintf("External func %s:%s\n", library, name); |
1 | 5809 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) |
5810 { | |
5811 if(strcasecmp(library, libraries[i].name)) | |
5812 continue; | |
5813 for(j=0; j<libraries[i].length; j++) | |
5814 { | |
5815 if(strcmp(name, libraries[i].exps[j].name)) | |
5816 continue; | |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5817 if((unsigned int)(libraries[i].exps[j].func) == -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5818 return NULL; //undefined func |
3465 | 5819 // printf("Hit: 0x%08X\n", libraries[i].exps[j].func); |
1 | 5820 return libraries[i].exps[j].func; |
5821 } | |
5822 } | |
9897 | 5823 |
5824 #ifndef LOADLIB_TRY_NATIVE | |
5825 /* hack for vss h264 */ | |
22367
97639699240b
Update 3ivx decoder to latest version and allow it to load required library.
voroshil
parents:
21462
diff
changeset
|
5826 if (!strcmp(library,"vssh264core.dll") || !strcmp(library,"3ivx.dll")) |
9897 | 5827 #endif |
5828 /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ | |
5829 { | |
5830 int hand; | |
5831 WINE_MODREF *wm; | |
5832 void *func; | |
5833 | |
5834 hand = LoadLibraryA(library); | |
5835 if (!hand) | |
5836 goto no_dll_byname; | |
5837 wm = MODULE32_LookupHMODULE(hand); | |
5838 if (!wm) | |
5839 { | |
5840 FreeLibrary(hand); | |
5841 goto no_dll_byname; | |
5842 } | |
5843 func = PE_FindExportedFunction(wm, name, 0); | |
5844 if (!func) | |
5845 { | |
5846 printf("No such name in external dll\n"); | |
5847 FreeLibrary((int)hand); | |
5848 goto no_dll_byname; | |
5849 } | |
5850 | |
5851 printf("External dll loaded (offset: 0x%x, func: %p)\n", | |
5852 hand, func); | |
5853 return func; | |
5854 } | |
5855 | |
5856 no_dll_byname: | |
3465 | 5857 if(pos>150)return 0;// to many symbols |
30596
8806ec11a250
Use snprintf to ensure we do not write outside the buffer bounds
reimar
parents:
30503
diff
changeset
|
5858 snprintf(export_names[pos], sizeof(export_names[pos]), "%s", name); |
7386 | 5859 return add_stub(); |
1 | 5860 } |
5861 | |
2069 | 5862 void my_garbagecollection(void) |
128 | 5863 { |
5864 #ifdef GARBAGE | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5865 int unfree = 0, unfreecnt = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5866 |
7386 | 5867 int max_fatal = 8; |
3134 | 5868 free_registry(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5869 while (last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5870 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5871 alloc_header* mem = last_alloc + 1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5872 unfree += my_size(mem); |
3465 | 5873 unfreecnt++; |
7386 | 5874 if (my_release(mem) != 0) |
5875 // avoid endless loop when memory is trashed | |
5876 if (--max_fatal < 0) | |
5877 break; | |
128 | 5878 } |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
5879 dbgprintf("Total Unfree %d bytes cnt %d [%p,%d]\n",unfree, unfreecnt, last_alloc, alccnt); |
128 | 5880 #endif |
3134 | 5881 g_tls = NULL; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
5882 pthread_mutex_lock(&list_lock); |
3134 | 5883 list = NULL; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
5884 pthread_mutex_unlock(&list_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
5885 } |