Mercurial > mplayer.hg
annotate loader/win32.c @ 30864:adf8008a338f
Remove unnecessary forward declaration of print_wave_header().
author | diego |
---|---|
date | Tue, 16 Mar 2010 11:57:52 +0000 |
parents | 824ea0613f52 |
children | 24a1c1f79296 |
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" |
2139 | 52 |
2069 | 53 #include <stdlib.h> |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
54 #include <assert.h> |
2139 | 55 #include <stdarg.h> |
2069 | 56 #include <ctype.h> |
1 | 57 #include <pthread.h> |
128 | 58 #include <errno.h> |
1 | 59 #include <time.h> |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
60 #include <math.h> |
128 | 61 #include <unistd.h> |
62 #include <fcntl.h> | |
1 | 63 #include <sys/types.h> |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
64 #include <dirent.h> |
1 | 65 #include <sys/time.h> |
29027 | 66 #include <sys/stat.h> |
67 #include <sys/timeb.h> | |
2069 | 68 #ifdef HAVE_KSTAT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
69 #include <kstat.h> |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
70 #endif |
1 | 71 |
26105 | 72 #ifdef HAVE_SYS_MMAN_H |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
73 #include <sys/mman.h> |
26111
eb82d1524b6d
#include osdep/mman.h if sys/mman.h is not available.
diego
parents:
26105
diff
changeset
|
74 #else |
eb82d1524b6d
#include osdep/mman.h if sys/mman.h is not available.
diego
parents:
26105
diff
changeset
|
75 #include "osdep/mmap.h" |
26105 | 76 #endif |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
77 #include "osdep/mmap_anon.h" |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
78 #include "libavutil/avstring.h" |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
79 |
30846
72ae3dd3aa6e
Replace separate Win32, XAnim and Real codec directories by one global dir.
diego
parents:
30819
diff
changeset
|
80 char* def_path = BINARY_CODECS_PATH; |
128 | 81 |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
82 static void do_cpuid(unsigned int ax, unsigned int *regs) |
128 | 83 { |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
84 __asm__ volatile |
3465 | 85 ( |
86 "pushl %%ebx; pushl %%ecx; pushl %%edx;" | |
87 ".byte 0x0f, 0xa2;" | |
88 "movl %%eax, (%2);" | |
89 "movl %%ebx, 4(%2);" | |
90 "movl %%ecx, 8(%2);" | |
91 "movl %%edx, 12(%2);" | |
92 "popl %%edx; popl %%ecx; popl %%ebx;" | |
93 : "=a" (ax) | |
94 : "0" (ax), "S" (regs) | |
2069 | 95 ); |
128 | 96 } |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
97 static unsigned int c_localcount_tsc(void) |
1 | 98 { |
99 int a; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
100 __asm__ volatile |
3465 | 101 ( |
102 "rdtsc\n\t" | |
103 :"=a"(a) | |
104 : | |
105 :"edx" | |
106 ); | |
1 | 107 return a; |
108 } | |
128 | 109 static void c_longcount_tsc(long long* z) |
1 | 110 { |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
111 __asm__ volatile |
3465 | 112 ( |
113 "pushl %%ebx\n\t" | |
114 "movl %%eax, %%ebx\n\t" | |
115 "rdtsc\n\t" | |
116 "movl %%eax, 0(%%ebx)\n\t" | |
117 "movl %%edx, 4(%%ebx)\n\t" | |
118 "popl %%ebx\n\t" | |
119 ::"a"(z) | |
14212
540903a59fc0
add missing registers in clobber list, fixes bug #169
reimar
parents:
13751
diff
changeset
|
120 :"edx" |
3465 | 121 ); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
122 } |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
123 static unsigned int c_localcount_notsc(void) |
1 | 124 { |
125 struct timeval tv; | |
126 unsigned limit=~0; | |
127 limit/=1000000; | |
128 gettimeofday(&tv, 0); | |
129 return limit*tv.tv_usec; | |
130 } | |
128 | 131 static void c_longcount_notsc(long long* z) |
1 | 132 { |
133 struct timeval tv; | |
134 unsigned long long result; | |
135 unsigned limit=~0; | |
136 if(!z)return; | |
137 limit/=1000000; | |
138 gettimeofday(&tv, 0); | |
139 result=tv.tv_sec; | |
140 result<<=32; | |
141 result+=limit*tv.tv_usec; | |
142 *z=result; | |
143 } | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
144 static unsigned int localcount_stub(void); |
2069 | 145 static void longcount_stub(long long*); |
128 | 146 static unsigned int (*localcount)()=localcount_stub; |
147 static void (*longcount)(long long*)=longcount_stub; | |
1 | 148 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
149 static pthread_mutex_t memmut; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
150 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
151 static unsigned int localcount_stub(void) |
128 | 152 { |
153 unsigned int regs[4]; | |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
154 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
155 if ((regs[3] & 0x00000010) != 0) |
128 | 156 { |
157 localcount=c_localcount_tsc; | |
158 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
159 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
160 else |
128 | 161 { |
3465 | 162 localcount=c_localcount_notsc; |
128 | 163 longcount=c_longcount_notsc; |
164 } | |
165 return localcount(); | |
166 } | |
167 static void longcount_stub(long long* z) | |
1 | 168 { |
128 | 169 unsigned int regs[4]; |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
170 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
171 if ((regs[3] & 0x00000010) != 0) |
128 | 172 { |
173 localcount=c_localcount_tsc; | |
174 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
175 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
176 else |
128 | 177 { |
3465 | 178 localcount=c_localcount_notsc; |
128 | 179 longcount=c_longcount_notsc; |
180 } | |
181 longcount(z); | |
182 } | |
2780 | 183 |
17020 | 184 #include "mp_msg.h" |
2069 | 185 int LOADER_DEBUG=1; // active only if compiled with -DDETAILED_OUT |
3128 | 186 //#define DETAILED_OUT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
187 static inline void dbgprintf(char* fmt, ...) |
128 | 188 { |
235 | 189 #ifdef DETAILED_OUT |
128 | 190 if(LOADER_DEBUG) |
191 { | |
192 FILE* f; | |
193 va_list va; | |
3465 | 194 va_start(va, fmt); |
128 | 195 f=fopen("./log", "a"); |
3134 | 196 vprintf(fmt, va); |
3465 | 197 fflush(stdout); |
198 if(f) | |
128 | 199 { |
200 vfprintf(f, fmt, va); | |
201 fsync(fileno(f)); | |
3465 | 202 fclose(f); |
128 | 203 } |
204 va_end(va); | |
205 } | |
235 | 206 #endif |
17932 | 207 if ( mp_msg_test(MSGT_WIN32,MSGL_DBG3) ) |
5740 | 208 { |
209 va_list va; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
210 |
5740 | 211 va_start(va, fmt); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
212 vprintf(fmt, va); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
213 // mp_dbg(MSGT_WIN32, MSGL_DBG3, fmt, va); |
5740 | 214 va_end(va); |
30220
057c8193f4d3
Avoid excessive fflush in dbgprintf if we didn't even print anything.
reimar
parents:
29725
diff
changeset
|
215 fflush(stdout); |
5740 | 216 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
217 } |
3128 | 218 |
219 | |
3465 | 220 char export_names[300][32]={ |
221 "name1", | |
222 //"name2", | |
223 //"name3" | |
1 | 224 }; |
225 //#define min(x,y) ((x)<(y)?(x):(y)) | |
226 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
227 void destroy_event(void* event); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
228 |
3134 | 229 struct th_list_t; |
230 typedef struct th_list_t{ | |
231 int id; | |
232 void* thread; | |
233 struct th_list_t* next; | |
234 struct th_list_t* prev; | |
235 } th_list; | |
236 | |
237 | |
238 // have to be cleared by GARBAGE COLLECTOR | |
25806
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
239 //static unsigned char* heap=NULL; |
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
240 //static int heap_counter=0; |
3134 | 241 static tls_t* g_tls=NULL; |
242 static th_list* list=NULL; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
243 static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; |
3134 | 244 |
25806
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
245 #if 0 |
2069 | 246 static void test_heap(void) |
1 | 247 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
248 int offset=0; |
1 | 249 if(heap==0) |
250 return; | |
251 while(offset<heap_counter) | |
252 { | |
253 if(*(int*)(heap+offset)!=0x433476) | |
254 { | |
255 printf("Heap corruption at address %d\n", offset); | |
256 return; | |
257 } | |
258 offset+=8+*(int*)(heap+offset+4); | |
259 } | |
260 for(;offset<min(offset+1000, 20000000); offset++) | |
261 if(heap[offset]!=0xCC) | |
3465 | 262 { |
263 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
|
264 } |
1 | 265 } |
25806
65e036ab9d83
Disable unused function test_heap, fixes the warning:
diego
parents:
25805
diff
changeset
|
266 #endif |
1 | 267 #undef MEMORY_DEBUG |
268 | |
269 #ifdef MEMORY_DEBUG | |
270 | |
7386 | 271 static void* my_mreq(int size, int to_zero) |
1 | 272 { |
273 static int test=0; | |
274 test++; | |
275 if(test%10==0)printf("Memory: %d bytes allocated\n", heap_counter); | |
3465 | 276 // test_heap(); |
1 | 277 if(heap==NULL) |
278 { | |
279 heap=malloc(20000000); | |
280 memset(heap, 0xCC,20000000); | |
281 } | |
282 if(heap==0) | |
283 { | |
284 printf("No enough memory\n"); | |
285 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
286 } |
1 | 287 if(heap_counter+size>20000000) |
288 { | |
289 printf("No enough memory\n"); | |
290 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
291 } |
1 | 292 *(int*)(heap+heap_counter)=0x433476; |
293 heap_counter+=4; | |
294 *(int*)(heap+heap_counter)=size; | |
295 heap_counter+=4; | |
296 printf("Allocated %d bytes of memory: sys %d, user %d-%d\n", size, heap_counter-8, heap_counter, heap_counter+size); | |
297 if(to_zero) | |
3465 | 298 memset(heap+heap_counter, 0, size); |
1543 | 299 else |
2139 | 300 memset(heap+heap_counter, 0xcc, size); // make crash reproducable |
1 | 301 heap_counter+=size; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
302 return heap+heap_counter-size; |
1 | 303 } |
7386 | 304 static int my_release(char* memory) |
1 | 305 { |
3465 | 306 // test_heap(); |
1 | 307 if(memory==NULL) |
308 { | |
309 printf("ERROR: free(0)\n"); | |
310 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
311 } |
1 | 312 if(*(int*)(memory-8)!=0x433476) |
313 { | |
314 printf("MEMORY CORRUPTION !!!!!!!!!!!!!!!!!!!\n"); | |
315 return 0; | |
316 } | |
317 printf("Freed %d bytes of memory\n", *(int*)(memory-4)); | |
3465 | 318 // memset(memory-8, *(int*)(memory-4), 0xCC); |
1 | 319 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
320 } |
1 | 321 |
322 #else | |
128 | 323 #define GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
324 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
|
325 struct alloc_header_t |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
326 { |
3465 | 327 // 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
|
328 alloc_header* prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
329 alloc_header* next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
330 long deadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
331 long size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
332 long type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
333 long reserved1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
334 long reserved2; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
335 long reserved3; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
336 }; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
337 |
128 | 338 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
339 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
|
340 static int alccnt = 0; |
128 | 341 #endif |
342 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
343 #define AREATYPE_CLIENT 0 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
344 #define AREATYPE_EVENT 1 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
345 #define AREATYPE_MUTEX 2 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
346 #define AREATYPE_COND 3 |
3134 | 347 #define AREATYPE_CRITSECT 4 |
348 | |
349 /* -- critical sections -- */ | |
350 struct CRITSECT | |
351 { | |
352 pthread_t id; | |
353 pthread_mutex_t mutex; | |
30795 | 354 pthread_cond_t unlocked; |
355 int lock_count; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
356 long deadbeef; |
3134 | 357 }; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
358 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
359 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
|
360 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
|
361 { |
3465 | 362 int nsize = size + sizeof(alloc_header); |
30702 | 363 alloc_header* header = malloc(nsize); |
3465 | 364 if (!header) |
365 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
366 if (to_zero) |
3465 | 367 memset(header, 0, nsize); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
368 #ifdef GARBAGE |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
369 if (!last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
370 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
371 pthread_mutex_init(&memmut, NULL); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
372 pthread_mutex_lock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
373 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
374 else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
375 { |
3465 | 376 pthread_mutex_lock(&memmut); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
377 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
|
378 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
379 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
380 header->prev = last_alloc; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
381 header->next = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
382 last_alloc = header; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
383 alccnt++; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
384 pthread_mutex_unlock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
385 #endif |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
386 header->deadbeef = 0xdeadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
387 header->size = size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
388 header->type = type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
389 |
3128 | 390 //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
|
391 return header + 1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
392 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
393 |
7386 | 394 static int my_release(void* memory) |
1 | 395 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
396 alloc_header* header = (alloc_header*) memory - 1; |
128 | 397 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
398 alloc_header* prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
399 alloc_header* nextmem; |
3134 | 400 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
401 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
402 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
403 |
7386 | 404 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
|
405 { |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
406 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
|
407 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
408 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
409 |
3128 | 410 pthread_mutex_lock(&memmut); |
411 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
412 switch(header->type) |
128 | 413 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
414 case AREATYPE_EVENT: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
415 destroy_event(memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
416 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
417 case AREATYPE_COND: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
418 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
|
419 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
420 case AREATYPE_MUTEX: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
421 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
|
422 break; |
3134 | 423 case AREATYPE_CRITSECT: |
424 pthread_mutex_destroy(&((struct CRITSECT*)memory)->mutex); | |
425 break; | |
426 default: | |
427 //memset(memory, 0xcc, header->size); | |
4384 | 428 ; |
128 | 429 } |
3128 | 430 |
3465 | 431 header->deadbeef = 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
432 prevmem = header->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
433 nextmem = header->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
434 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
435 if (prevmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
436 prevmem->next = nextmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
437 if (nextmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
438 nextmem->prev = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
439 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
440 if (header == last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
441 last_alloc = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
442 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
443 alccnt--; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
444 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
445 if (last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
446 pthread_mutex_unlock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
447 else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
448 pthread_mutex_destroy(&memmut); |
3465 | 449 |
3128 | 450 //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
|
451 #else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
452 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
453 return 0; |
128 | 454 #endif |
3465 | 455 //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
|
456 free(header); |
1 | 457 return 0; |
458 } | |
459 #endif | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
460 |
7386 | 461 static inline void* my_mreq(int size, int to_zero) |
3465 | 462 { |
463 return mreq_private(size, to_zero, AREATYPE_CLIENT); | |
464 } | |
465 | |
7386 | 466 static int my_size(void* memory) |
5234 | 467 { |
468 if(!memory) return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
469 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
|
470 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
471 |
3465 | 472 static void* my_realloc(void* memory, int size) |
1 | 473 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
474 void *ans = memory; |
5234 | 475 int osize; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
476 if (memory == NULL) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
477 return my_mreq(size, 0); |
5234 | 478 osize = my_size(memory); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
479 if (osize < size) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
480 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
481 ans = my_mreq(size, 0); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
482 memcpy(ans, memory, osize); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
483 my_release(memory); |
2069 | 484 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
485 return ans; |
2069 | 486 } |
1 | 487 |
3465 | 488 /* |
489 * | |
490 * WINE API - native implementation for several win32 libraries | |
491 * | |
492 */ | |
493 | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
494 static int WINAPI ext_unknown(void) |
1 | 495 { |
496 printf("Unknown func called\n"); | |
497 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
498 } |
3465 | 499 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
500 static int WINAPI expGetVolumeInformationA( const char *root, char *label, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
501 unsigned int label_len, unsigned int *serial, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
502 unsigned int *filename_len,unsigned int *flags, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
503 char *fsname, unsigned int fsname_len ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
504 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
505 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
|
506 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
|
507 //hack Do not return any real data - do nothing |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
508 return 1; |
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 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
511 static unsigned int WINAPI expGetDriveTypeA( const char *root ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
512 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
513 dbgprintf("GetDriveTypeA( %s ) => %d\n",root,DRIVE_FIXED); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
514 // hack return as Fixed Drive Type |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
515 return DRIVE_FIXED; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
516 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
517 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
518 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
|
519 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
520 dbgprintf("GetLogicalDriveStringsA(%d, 0x%x) => 4\n",len,buffer); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
521 // hack only have one drive c:\ in this hack |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
522 *buffer++='c'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
523 *buffer++=':'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
524 *buffer++='\\'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
525 *buffer++='\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
526 *buffer= '\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
527 return 4; // 1 drive * 4 bytes (includes null) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
528 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
529 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
530 |
3465 | 531 static int WINAPI expIsBadWritePtr(void* ptr, unsigned int count) |
1 | 532 { |
3465 | 533 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 534 dbgprintf("IsBadWritePtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
535 return result; | |
1 | 536 } |
3465 | 537 static int WINAPI expIsBadReadPtr(void* ptr, unsigned int count) |
1 | 538 { |
3465 | 539 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 540 dbgprintf("IsBadReadPtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
541 return result; | |
1 | 542 } |
3465 | 543 static int WINAPI expDisableThreadLibraryCalls(int module) |
1 | 544 { |
128 | 545 dbgprintf("DisableThreadLibraryCalls(0x%x) => 0\n", module); |
1 | 546 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
547 } |
3465 | 548 |
549 static HMODULE WINAPI expGetDriverModuleHandle(DRVR* pdrv) | |
1 | 550 { |
2069 | 551 HMODULE result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
552 if (pdrv==NULL) |
2069 | 553 result=0; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
554 else |
3465 | 555 result=pdrv->hDriverModule; |
2069 | 556 dbgprintf("GetDriverModuleHandle(%p) => %p\n", pdrv, result); |
128 | 557 return result; |
1 | 558 } |
559 | |
2069 | 560 #define MODULE_HANDLE_kernel32 ((HMODULE)0x120) |
5234 | 561 #define MODULE_HANDLE_user32 ((HMODULE)0x121) |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
562 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
563 #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
|
564 #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
|
565 #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
|
566 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
567 #define MODULE_HANDLE_comdlg32 ((HMODULE)0x125) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
568 #define MODULE_HANDLE_msvcrt ((HMODULE)0x126) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
569 #define MODULE_HANDLE_ole32 ((HMODULE)0x127) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
570 #define MODULE_HANDLE_winmm ((HMODULE)0x128) |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
571 #define MODULE_HANDLE_psapi ((HMODULE)0x129) |
2069 | 572 |
30806 | 573 // Fake PE header, since some software (and the Microsoft CRT v8 and newer) |
574 // assume GetModuleHandle(NULL) returns a pointer to a PE header. | |
575 // We simulate a very simple header with only one section. | |
576 // | |
577 // NOTE: If you have a section called .mixcrt, the Microsoft CRT will assume | |
578 // it's running in a POSIX binary, and stop using EncodePointer/DecodePointer. | |
579 static const struct { | |
580 IMAGE_DOS_HEADER doshdr; | |
581 IMAGE_NT_HEADERS nthdr; | |
582 IMAGE_SECTION_HEADER opthdr; | |
583 } __attribute__((__packed__)) mp_exe = { | |
584 .doshdr.e_lfanew = sizeof(IMAGE_DOS_HEADER), | |
585 .nthdr.FileHeader.NumberOfSections = 1, | |
586 .nthdr.FileHeader.SizeOfOptionalHeader = | |
587 sizeof(IMAGE_NT_HEADERS) - FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader), /* 0xe0 */ | |
588 .opthdr.Name = ".text" | |
589 }; | |
590 | |
3465 | 591 static HMODULE WINAPI expGetModuleHandleA(const char* name) |
1 | 592 { |
3465 | 593 WINE_MODREF* wm; |
594 HMODULE result; | |
595 if(!name) | |
30806 | 596 result=(HMODULE)&mp_exe.doshdr; |
3465 | 597 else |
598 { | |
599 wm=MODULE_FindModule(name); | |
600 if(wm==0)result=0; | |
128 | 601 else |
3465 | 602 result=(HMODULE)(wm->module); |
603 } | |
604 if(!result) | |
605 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
606 if(name && (strcasecmp(name, "kernel32")==0 || !strcasecmp(name, "kernel32.dll"))) |
3465 | 607 result=MODULE_HANDLE_kernel32; |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
608 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
609 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
|
610 result=MODULE_HANDLE_user32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
611 #endif |
3465 | 612 } |
613 dbgprintf("GetModuleHandleA('%s') => 0x%x\n", name, result); | |
614 return result; | |
1 | 615 } |
128 | 616 |
30597 | 617 static HMODULE WINAPI expGetModuleHandleW(const uint16_t* name) |
618 { | |
619 char aname[256]; | |
620 int pos = 0; | |
621 while (*name) { | |
622 if (*name > 256 || pos >= sizeof(aname) - 1) | |
623 return NULL; | |
624 aname[pos++] = *name++; | |
625 } | |
626 aname[pos] = 0; | |
627 return expGetModuleHandleA(aname); | |
628 } | |
629 | |
3465 | 630 static void* WINAPI expCreateThread(void* pSecAttr, long dwStackSize, |
631 void* lpStartAddress, void* lpParameter, | |
632 long dwFlags, long* dwThreadId) | |
1 | 633 { |
634 pthread_t *pth; | |
3465 | 635 // printf("CreateThread:"); |
7386 | 636 pth = (pthread_t*) my_mreq(sizeof(pthread_t), 0); |
1 | 637 pthread_create(pth, NULL, (void*(*)(void*))lpStartAddress, lpParameter); |
638 if(dwFlags) | |
128 | 639 printf( "WARNING: CreateThread flags not supported\n"); |
1 | 640 if(dwThreadId) |
641 *dwThreadId=(long)pth; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
642 pthread_mutex_lock(&list_lock); |
1 | 643 if(list==NULL) |
644 { | |
645 list=my_mreq(sizeof(th_list), 1); | |
646 list->next=list->prev=NULL; | |
647 } | |
648 else | |
649 { | |
650 list->next=my_mreq(sizeof(th_list), 0); | |
651 list->next->prev=list; | |
652 list->next->next=NULL; | |
653 list=list->next; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
654 } |
1 | 655 list->thread=pth; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
656 pthread_mutex_unlock(&list_lock); |
128 | 657 dbgprintf("CreateThread(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0x%x\n", |
3465 | 658 pSecAttr, dwStackSize, lpStartAddress, lpParameter, dwFlags, dwThreadId, pth); |
1 | 659 return pth; |
660 } | |
661 | |
30819 | 662 static DWORD WINAPI expResumeThread(HANDLE hThread) |
663 { | |
664 int ret = 1; | |
665 dbgprintf("ResumeThread(0x%x) => 0x%x\n", hThread, ret); | |
666 return ret; | |
667 } | |
668 | |
1 | 669 struct mutex_list_t; |
670 | |
671 struct mutex_list_t | |
672 { | |
128 | 673 char type; |
1 | 674 pthread_mutex_t *pm; |
128 | 675 pthread_cond_t *pc; |
676 char state; | |
677 char reset; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
678 char name[128]; |
128 | 679 int semaphore; |
30811 | 680 int lock_count; |
681 pthread_t owner; | |
1 | 682 struct mutex_list_t* next; |
683 struct mutex_list_t* prev; | |
684 }; | |
685 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
|
686 static mutex_list* mlist=NULL; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
687 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
|
688 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
689 void destroy_event(void* event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
690 { |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
691 pthread_mutex_lock(&mlist_lock); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
692 mutex_list* pp=mlist; |
3465 | 693 // 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
|
694 while(pp) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
695 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
696 if(pp==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
697 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
698 if(pp->next) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
699 pp->next->prev=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
700 if(pp->prev) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
701 pp->prev->next=pp->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
702 if(mlist==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
703 mlist=mlist->prev; |
3465 | 704 /* |
705 pp=mlist; | |
706 while(pp) | |
707 { | |
708 printf("%x => ", pp); | |
709 pp=pp->prev; | |
710 } | |
711 printf("0\n"); | |
712 */ | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
713 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
|
714 return; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
715 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
716 pp=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
717 } |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
718 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
|
719 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
720 |
3465 | 721 static void* WINAPI expCreateEventA(void* pSecAttr, char bManualReset, |
722 char bInitialState, const char* name) | |
1 | 723 { |
724 pthread_mutex_t *pm; | |
128 | 725 pthread_cond_t *pc; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
726 void *ret; |
3465 | 727 /* |
728 mutex_list* pp; | |
729 pp=mlist; | |
730 while(pp) | |
731 { | |
732 printf("%x => ", pp); | |
733 pp=pp->prev; | |
734 } | |
735 printf("0\n"); | |
736 */ | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
737 pthread_mutex_lock(&mlist_lock); |
1 | 738 if(mlist!=NULL) |
739 { | |
740 mutex_list* pp=mlist; | |
741 if(name!=NULL) | |
3465 | 742 do |
1 | 743 { |
128 | 744 if((strcmp(pp->name, name)==0) && (pp->type==0)) |
745 { | |
746 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", | |
3465 | 747 pSecAttr, bManualReset, bInitialState, name, name, pp->pm); |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
748 pthread_mutex_unlock(&mlist_lock); |
1 | 749 return pp->pm; |
128 | 750 } |
2069 | 751 }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
|
752 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
753 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
1 | 754 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
|
755 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 756 pthread_cond_init(pc, NULL); |
1 | 757 if(mlist==NULL) |
758 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
759 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
1 | 760 mlist->next=mlist->prev=NULL; |
761 } | |
762 else | |
763 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
764 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 765 mlist->next->prev=mlist; |
1 | 766 mlist->next->next=NULL; |
767 mlist=mlist->next; | |
768 } | |
128 | 769 mlist->type=0; /* Type Event */ |
1 | 770 mlist->pm=pm; |
128 | 771 mlist->pc=pc; |
772 mlist->state=bInitialState; | |
30789 | 773 mlist->reset=!bManualReset; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
774 if(name) |
3465 | 775 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
|
776 else |
1 | 777 mlist->name[0]=0; |
778 if(pm==NULL) | |
779 dbgprintf("ERROR::: CreateEventA failure\n"); | |
3465 | 780 /* |
781 if(bInitialState) | |
782 pthread_mutex_lock(pm); | |
783 */ | |
128 | 784 if(name) |
3465 | 785 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", |
786 pSecAttr, bManualReset, bInitialState, name, name, mlist); | |
128 | 787 else |
3465 | 788 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, NULL) => 0x%x\n", |
789 pSecAttr, bManualReset, bInitialState, mlist); | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
790 ret = mlist; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
791 pthread_mutex_unlock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
792 return ret; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
793 } |
1 | 794 |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
795 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
|
796 char bInitialState, const WCHAR* name) |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
797 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
798 char ascii_name[256]; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
799 char *aname = NULL; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
800 if (name) { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
801 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
|
802 aname = ascii_name; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
803 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
804 return expCreateEventA(pSecAttr, bManualReset, bInitialState, aname); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
805 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
806 |
3465 | 807 static void* WINAPI expSetEvent(void* event) |
1 | 808 { |
128 | 809 mutex_list *ml = (mutex_list *)event; |
810 dbgprintf("SetEvent(%x) => 0x1\n", event); | |
811 pthread_mutex_lock(ml->pm); | |
812 if (ml->state == 0) { | |
813 ml->state = 1; | |
814 pthread_cond_signal(ml->pc); | |
815 } | |
816 pthread_mutex_unlock(ml->pm); | |
817 | |
818 return (void *)1; | |
1 | 819 } |
3465 | 820 static void* WINAPI expResetEvent(void* event) |
1 | 821 { |
128 | 822 mutex_list *ml = (mutex_list *)event; |
823 dbgprintf("ResetEvent(0x%x) => 0x1\n", event); | |
824 pthread_mutex_lock(ml->pm); | |
825 ml->state = 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
826 pthread_mutex_unlock(ml->pm); |
128 | 827 |
828 return (void *)1; | |
1 | 829 } |
830 | |
3465 | 831 static void* WINAPI expWaitForSingleObject(void* object, int duration) |
1 | 832 { |
128 | 833 mutex_list *ml = (mutex_list *)object; |
2069 | 834 // FIXME FIXME FIXME - this value is sometime unititialize !!! |
835 int ret = WAIT_FAILED; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
836 mutex_list* pp; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
837 th_list* tp; |
2779 | 838 if(object == (void*)0xcfcf9898) |
839 { | |
3465 | 840 /** |
841 From GetCurrentThread() documentation: | |
842 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. | |
843 | |
844 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. | |
845 | |
846 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. | |
847 **/ | |
2779 | 848 dbgprintf("WaitForSingleObject(thread_handle) called\n"); |
3128 | 849 return (void*)WAIT_FAILED; |
2779 | 850 } |
2069 | 851 dbgprintf("WaitForSingleObject(0x%x, duration %d) =>\n",object, duration); |
852 | |
30801 | 853 // See if this is a thread. |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
854 pthread_mutex_lock(&list_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
855 tp=list; |
30801 | 856 while (tp && (tp->thread != object)) |
857 tp = tp->prev; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
858 pthread_mutex_unlock(&list_lock); |
30801 | 859 if (tp) { |
860 if (pthread_join(*(pthread_t*)object, NULL) == 0) { | |
861 return (void*)WAIT_OBJECT_0; | |
862 } else { | |
863 return (void*)WAIT_FAILED; | |
864 } | |
865 } | |
866 | |
718 | 867 // loop below was slightly fixed - its used just for checking if |
868 // this object really exists in our list | |
869 if (!ml) | |
3465 | 870 return (void*) ret; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
871 pthread_mutex_lock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
872 pp=mlist; |
718 | 873 while (pp && (pp->pm != ml->pm)) |
2069 | 874 pp = pp->prev; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
875 pthread_mutex_unlock(&mlist_lock); |
718 | 876 if (!pp) { |
2069 | 877 dbgprintf("WaitForSingleObject: NotFound\n"); |
878 return (void*)ret; | |
718 | 879 } |
128 | 880 |
881 pthread_mutex_lock(ml->pm); | |
882 | |
883 switch(ml->type) { | |
3465 | 884 case 0: /* Event */ |
128 | 885 if (duration == 0) { /* Check Only */ |
30788
ea3ba0e77acf
Fix return values of WaitForSingleObject when checking an event.
sesse
parents:
30702
diff
changeset
|
886 if (ml->state == 1) ret = WAIT_OBJECT_0; |
ea3ba0e77acf
Fix return values of WaitForSingleObject when checking an event.
sesse
parents:
30702
diff
changeset
|
887 else ret = WAIT_FAILED; |
128 | 888 } |
889 if (duration == -1) { /* INFINITE */ | |
3465 | 890 if (ml->state == 0) |
891 pthread_cond_wait(ml->pc,ml->pm); | |
892 if (ml->reset) | |
893 ml->state = 0; | |
894 ret = WAIT_OBJECT_0; | |
128 | 895 } |
896 if (duration > 0) { /* Timed Wait */ | |
3465 | 897 struct timespec abstime; |
898 struct timeval now; | |
899 gettimeofday(&now, 0); | |
900 abstime.tv_sec = now.tv_sec + (now.tv_usec+duration)/1000000; | |
901 abstime.tv_nsec = ((now.tv_usec+duration)%1000000)*1000; | |
902 if (ml->state == 0) | |
903 ret=pthread_cond_timedwait(ml->pc,ml->pm,&abstime); | |
904 if (ret == ETIMEDOUT) ret = WAIT_TIMEOUT; | |
905 else ret = WAIT_OBJECT_0; | |
906 if (ml->reset) | |
907 ml->state = 0; | |
128 | 908 } |
3465 | 909 break; |
910 case 1: /* Semaphore */ | |
911 if (duration == 0) { | |
912 if(ml->semaphore==0) ret = WAIT_FAILED; | |
913 else { | |
30810 | 914 ml->semaphore--; |
3465 | 915 ret = WAIT_OBJECT_0; |
916 } | |
917 } | |
128 | 918 if (duration == -1) { |
3465 | 919 if (ml->semaphore==0) |
920 pthread_cond_wait(ml->pc,ml->pm); | |
921 ml->semaphore--; | |
30810 | 922 ret = WAIT_OBJECT_0; |
128 | 923 } |
3465 | 924 break; |
30811 | 925 case 2: /* Mutex */ |
926 if (duration == 0) { | |
927 if(ml->lock_count > 0 && ml->owner != pthread_self()) ret = WAIT_FAILED; | |
928 else { | |
929 ml->lock_count++; | |
930 ml->owner = pthread_self(); | |
931 ret = WAIT_OBJECT_0; | |
932 } | |
933 } | |
934 if (duration == -1) { | |
935 if (ml->lock_count > 0 && ml->owner != pthread_self()) { | |
936 pthread_cond_wait(ml->pc,ml->pm); | |
937 } | |
938 ml->lock_count++; | |
939 ml->owner = pthread_self(); | |
940 ret = WAIT_OBJECT_0; | |
941 } | |
942 break; | |
128 | 943 } |
944 pthread_mutex_unlock(ml->pm); | |
945 | |
946 dbgprintf("WaitForSingleObject(0x%x, %d): 0x%x => 0x%x \n",object,duration,ml,ret); | |
947 return (void *)ret; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
948 } |
1 | 949 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
950 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
951 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
|
952 int WaitAll, int duration) |
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 int i; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
955 void *object; |
8451 | 956 void *ret; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
957 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
958 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
|
959 count, objects, WaitAll, duration); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
960 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
961 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
|
962 { |
13182 | 963 object = (void *)objects[i]; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
964 ret = expWaitForSingleObject(object, duration); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
965 if (WaitAll) |
8285 | 966 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
|
967 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
968 return ret; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
969 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
970 return NULL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
971 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
972 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
973 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
|
974 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
975 dbgprintf("ExitThread(%d)\n", retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
976 pthread_exit(&retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
977 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
978 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
979 |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
980 static int pf_set = 0; |
1 | 981 static BYTE PF[64] = {0,}; |
982 | |
128 | 983 static void DumpSystemInfo(const SYSTEM_INFO* si) |
984 { | |
985 dbgprintf(" Processor architecture %d\n", si->u.s.wProcessorArchitecture); | |
986 dbgprintf(" Page size: %d\n", si->dwPageSize); | |
987 dbgprintf(" Minimum app address: %d\n", si->lpMinimumApplicationAddress); | |
988 dbgprintf(" Maximum app address: %d\n", si->lpMaximumApplicationAddress); | |
989 dbgprintf(" Active processor mask: 0x%x\n", si->dwActiveProcessorMask); | |
990 dbgprintf(" Number of processors: %d\n", si->dwNumberOfProcessors); | |
991 dbgprintf(" Processor type: 0x%x\n", si->dwProcessorType); | |
992 dbgprintf(" Allocation granularity: 0x%x\n", si->dwAllocationGranularity); | |
993 dbgprintf(" Processor level: 0x%x\n", si->wProcessorLevel); | |
994 dbgprintf(" Processor revision: 0x%x\n", si->wProcessorRevision); | |
995 } | |
996 | |
3465 | 997 static void WINAPI expGetSystemInfo(SYSTEM_INFO* si) |
1 | 998 { |
3465 | 999 /* FIXME: better values for the two entries below... */ |
1000 static int cache = 0; | |
1001 static SYSTEM_INFO cachedsi; | |
1002 dbgprintf("GetSystemInfo(%p) =>\n", si); | |
1003 | |
1004 if (cache) { | |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1005 goto exit; |
3465 | 1006 } |
1007 memset(PF,0,sizeof(PF)); | |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
1008 pf_set = 1; |
3465 | 1009 |
1010 cachedsi.u.s.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_INTEL; | |
1011 cachedsi.dwPageSize = getpagesize(); | |
1012 | |
1013 /* FIXME: better values for the two entries below... */ | |
1014 cachedsi.lpMinimumApplicationAddress = (void *)0x00000000; | |
1015 cachedsi.lpMaximumApplicationAddress = (void *)0x7FFFFFFF; | |
1016 cachedsi.dwActiveProcessorMask = 1; | |
1017 cachedsi.dwNumberOfProcessors = 1; | |
1018 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1019 cachedsi.dwAllocationGranularity = 0x10000; | |
1020 cachedsi.wProcessorLevel = 5; /* pentium */ | |
1021 cachedsi.wProcessorRevision = 0x0101; | |
1022 | |
1023 /* mplayer's way to detect PF's */ | |
1024 { | |
17020 | 1025 #include "cpudetect.h" |
3465 | 1026 |
1027 if (gCpuCaps.hasMMX) | |
1028 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1029 if (gCpuCaps.hasSSE) | |
1030 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1031 if (gCpuCaps.hasSSE2) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1032 PF[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; |
3465 | 1033 if (gCpuCaps.has3DNow) |
1034 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
3404 | 1035 |
10013 | 1036 if (gCpuCaps.cpuType == 4) |
1037 { | |
1038 cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1039 cachedsi.wProcessorLevel = 4; | |
1040 } | |
10139
8ac4502b7b3d
10l by me, noticed by a guy with a transmeta cpu, but forgot his name, sorry
alex
parents:
10013
diff
changeset
|
1041 else if (gCpuCaps.cpuType >= 5) |
3404 | 1042 { |
10013 | 1043 cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; |
1044 cachedsi.wProcessorLevel = 5; | |
1045 } | |
1046 else | |
1047 { | |
1048 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1049 cachedsi.wProcessorLevel = 3; | |
3404 | 1050 } |
1051 cachedsi.wProcessorRevision = gCpuCaps.cpuStepping; | |
1052 cachedsi.dwNumberOfProcessors = 1; /* hardcoded */ | |
3465 | 1053 } |
3404 | 1054 |
3405 | 1055 /* MPlayer: linux detection enabled (based on proc/cpuinfo) for checking |
1056 fdiv_bug and fpu emulation flags -- alex/MPlayer */ | |
3404 | 1057 #ifdef __linux__ |
3465 | 1058 { |
1 | 1059 char buf[20]; |
1060 char line[200]; | |
1061 FILE *f = fopen ("/proc/cpuinfo", "r"); | |
1062 | |
1063 if (!f) | |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1064 { |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1065 mp_msg(MSGT_WIN32, MSGL_WARN, "expGetSystemInfo: " |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1066 "/proc/cpuinfo not readable! " |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1067 "Expect bad performance and/or weird behaviour\n"); |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1068 goto exit; |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1069 } |
1 | 1070 while (fgets(line,200,f)!=NULL) { |
3465 | 1071 char *s,*value; |
1072 | |
1073 /* NOTE: the ':' is the only character we can rely on */ | |
1074 if (!(value = strchr(line,':'))) | |
1075 continue; | |
1076 /* terminate the valuename */ | |
1077 *value++ = '\0'; | |
1078 /* skip any leading spaces */ | |
1079 while (*value==' ') value++; | |
1080 if ((s=strchr(value,'\n'))) | |
1081 *s='\0'; | |
1082 | |
1083 /* 2.1 method */ | |
1084 if (!lstrncmpiA(line, "cpu family",strlen("cpu family"))) { | |
1085 if (isdigit (value[0])) { | |
1086 switch (value[0] - '0') { | |
1087 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1088 cachedsi.wProcessorLevel= 3; | |
1089 break; | |
1090 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1091 cachedsi.wProcessorLevel= 4; | |
1092 break; | |
1093 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1094 cachedsi.wProcessorLevel= 5; | |
1095 break; | |
1096 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1097 cachedsi.wProcessorLevel= 5; | |
1098 break; | |
1099 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1100 cachedsi.wProcessorLevel= 5; | |
1101 break; | |
1102 } | |
1 | 1103 } |
3465 | 1104 /* set the CPU type of the current processor */ |
1105 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1106 continue; | |
1107 } | |
1108 /* old 2.0 method */ | |
1109 if (!lstrncmpiA(line, "cpu",strlen("cpu"))) { | |
1110 if ( isdigit (value[0]) && value[1] == '8' && | |
1111 value[2] == '6' && value[3] == 0 | |
1112 ) { | |
1113 switch (value[0] - '0') { | |
1114 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1115 cachedsi.wProcessorLevel= 3; | |
1116 break; | |
1117 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1118 cachedsi.wProcessorLevel= 4; | |
1119 break; | |
1120 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1121 cachedsi.wProcessorLevel= 5; | |
1122 break; | |
1123 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1124 cachedsi.wProcessorLevel= 5; | |
1125 break; | |
1126 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1127 cachedsi.wProcessorLevel= 5; | |
1128 break; | |
1129 } | |
1 | 1130 } |
3465 | 1131 /* set the CPU type of the current processor */ |
1132 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1133 continue; | |
1134 } | |
1135 if (!lstrncmpiA(line,"fdiv_bug",strlen("fdiv_bug"))) { | |
1136 if (!lstrncmpiA(value,"yes",3)) | |
1137 PF[PF_FLOATING_POINT_PRECISION_ERRATA] = TRUE; | |
1138 | |
1139 continue; | |
1140 } | |
1141 if (!lstrncmpiA(line,"fpu",strlen("fpu"))) { | |
1142 if (!lstrncmpiA(value,"no",2)) | |
1143 PF[PF_FLOATING_POINT_EMULATED] = TRUE; | |
1144 | |
1145 continue; | |
1146 } | |
1147 if (!lstrncmpiA(line,"processor",strlen("processor"))) { | |
1148 /* processor number counts up...*/ | |
7386 | 1149 unsigned int x; |
3465 | 1150 |
1151 if (sscanf(value,"%d",&x)) | |
1152 if (x+1>cachedsi.dwNumberOfProcessors) | |
1153 cachedsi.dwNumberOfProcessors=x+1; | |
1154 | |
1155 /* Create a new processor subkey on a multiprocessor | |
1156 * system | |
1157 */ | |
1158 sprintf(buf,"%d",x); | |
1159 } | |
1160 if (!lstrncmpiA(line,"stepping",strlen("stepping"))) { | |
1161 int x; | |
1162 | |
1163 if (sscanf(value,"%d",&x)) | |
1164 cachedsi.wProcessorRevision = x; | |
1165 } | |
1166 if | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1167 ( (!lstrncmpiA(line,"flags",strlen("flags"))) |
3465 | 1168 || (!lstrncmpiA(line,"features",strlen("features"))) ) |
1169 { | |
1170 if (strstr(value,"cx8")) | |
1171 PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE; | |
1172 if (strstr(value,"mmx")) | |
1173 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1174 if (strstr(value,"tsc")) | |
1175 PF[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE; | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1176 if (strstr(value,"xmm") || strstr(value,"sse")) |
3465 | 1177 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1178 if (strstr(value,"sse2")) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1179 PF[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; |
3465 | 1180 if (strstr(value,"3dnow")) |
1181 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1182 } | |
1 | 1183 } |
1184 fclose (f); | |
3465 | 1185 /* |
1186 * ad hoc fix for smp machines. | |
1187 * some problems on WaitForSingleObject,CreateEvent,SetEvent | |
1188 * CreateThread ...etc.. | |
1189 * | |
1190 */ | |
1191 cachedsi.dwNumberOfProcessors=1; | |
1192 } | |
3404 | 1193 #endif /* __linux__ */ |
3465 | 1194 cache = 1; |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1195 exit: |
3465 | 1196 memcpy(si,&cachedsi,sizeof(*si)); |
1197 DumpSystemInfo(si); | |
1 | 1198 } |
1199 | |
7386 | 1200 // avoid undefined expGetSystemInfo |
1201 static WIN_BOOL WINAPI expIsProcessorFeaturePresent(DWORD v) | |
1202 { | |
1203 WIN_BOOL result = 0; | |
1204 if (!pf_set) | |
1205 { | |
1206 SYSTEM_INFO si; | |
1207 expGetSystemInfo(&si); | |
1208 } | |
1209 if(v<64) result=PF[v]; | |
1210 dbgprintf("IsProcessorFeaturePresent(0x%x) => 0x%x\n", v, result); | |
1211 return result; | |
1212 } | |
1213 | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1214 static WIN_BOOL WINAPI expIsDebuggerPresent(void) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1215 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1216 return 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
1217 } |
7386 | 1218 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1219 static long WINAPI expGetVersion(void) |
1 | 1220 { |
128 | 1221 dbgprintf("GetVersion() => 0xC0000004\n"); |
1222 return 0xC0000004;//Windows 95 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1223 } |
1 | 1224 |
3465 | 1225 static HANDLE WINAPI expHeapCreate(long flags, long init_size, long max_size) |
1 | 1226 { |
3465 | 1227 // printf("HeapCreate:"); |
128 | 1228 HANDLE result; |
1 | 1229 if(init_size==0) |
3465 | 1230 result=(HANDLE)my_mreq(0x110000, 0); |
1 | 1231 else |
3465 | 1232 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
|
1233 dbgprintf("HeapCreate(flags 0x%x, initial size %d, maximum size %d) => 0x%x\n", flags, init_size, max_size, result); |
128 | 1234 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1235 } |
3128 | 1236 |
1237 // this is another dirty hack | |
3465 | 1238 // VP31 is releasing one allocated Heap chunk twice |
3128 | 1239 // we will silently ignore this second call... |
1240 static void* heapfreehack = 0; | |
1241 static int heapfreehackshown = 0; | |
28051 | 1242 //void trapbug(void); |
3465 | 1243 static void* WINAPI expHeapAlloc(HANDLE heap, int flags, int size) |
1 | 1244 { |
1245 void* z; | |
3465 | 1246 /** |
1247 Morgan's m3jpeg32.dll v. 2.0 encoder expects that request for | |
1248 HeapAlloc returns area larger than size argument :-/ | |
1249 | |
1250 actually according to M$ Doc HeapCreate size should be rounded | |
1251 to page boundaries thus we should simulate this | |
1252 **/ | |
1253 //if (size == 22276) trapbug(); | |
1254 z=my_mreq((size + 0xfff) & 0x7ffff000, (flags & HEAP_ZERO_MEMORY)); | |
1 | 1255 if(z==0) |
1256 printf("HeapAlloc failure\n"); | |
3465 | 1257 dbgprintf("HeapAlloc(heap 0x%x, flags 0x%x, size %d) => 0x%x\n", heap, flags, size, z); |
3128 | 1258 heapfreehack = 0; // reset |
1 | 1259 return z; |
1260 } | |
3465 | 1261 static long WINAPI expHeapDestroy(void* heap) |
1 | 1262 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1263 dbgprintf("HeapDestroy(heap 0x%x) => 1\n", heap); |
1 | 1264 my_release(heap); |
1265 return 1; | |
1266 } | |
1267 | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1268 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
|
1269 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1270 dbgprintf("HeapFree(0x%x, 0x%x, pointer 0x%x) => 1\n", heap, dwFlags, lpMem); |
7386 | 1271 if (heapfreehack != lpMem && lpMem != (void*)0xffffffff |
1272 && lpMem != (void*)0xbdbdbdbd) | |
1273 // 0xbdbdbdbd is for i263_drv.drv && libefence | |
1274 // it seems to be reading from relased memory | |
1275 // 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
|
1276 my_release(lpMem); |
3128 | 1277 else |
1278 { | |
3465 | 1279 if (!heapfreehackshown++) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1280 printf("Info: HeapFree deallocating same memory twice! (%p)\n", lpMem); |
3128 | 1281 } |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1282 heapfreehack = lpMem; |
1 | 1283 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1284 } |
3465 | 1285 static long WINAPI expHeapSize(int heap, int flags, void* pointer) |
1 | 1286 { |
128 | 1287 long result=my_size(pointer); |
1288 dbgprintf("HeapSize(heap 0x%x, flags 0x%x, pointer 0x%x) => %d\n", heap, flags, pointer, result); | |
1289 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1290 } |
3465 | 1291 static void* WINAPI expHeapReAlloc(HANDLE heap,int flags,void *lpMem,int size) |
2069 | 1292 { |
3465 | 1293 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
|
1294 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
|
1295 return my_realloc(lpMem, size); |
2069 | 1296 } |
3465 | 1297 static long WINAPI expGetProcessHeap(void) |
1 | 1298 { |
128 | 1299 dbgprintf("GetProcessHeap() => 1\n"); |
1 | 1300 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1301 } |
3465 | 1302 static void* WINAPI expVirtualAlloc(void* v1, long v2, long v3, long v4) |
1 | 1303 { |
3465 | 1304 void* z = VirtualAlloc(v1, v2, v3, v4); |
1 | 1305 if(z==0) |
1306 printf("VirtualAlloc failure\n"); | |
128 | 1307 dbgprintf("VirtualAlloc(0x%x, %d, %d, %d) => 0x%x \n",v1,v2,v3,v4, z); |
1 | 1308 return z; |
1309 } | |
3465 | 1310 static int WINAPI expVirtualFree(void* v1, int v2, int v3) |
1 | 1311 { |
3465 | 1312 int result = VirtualFree(v1,v2,v3); |
128 | 1313 dbgprintf("VirtualFree(0x%x, %d, %d) => %d\n",v1,v2,v3, result); |
1314 return result; | |
3128 | 1315 } |
2579 | 1316 |
1317 /* we're building a table of critical sections. cs_win pointer uses the DLL | |
3465 | 1318 cs_unix is the real structure, we're using cs_win only to identifying cs_unix */ |
2579 | 1319 struct critsecs_list_t |
1320 { | |
1321 CRITICAL_SECTION *cs_win; | |
1322 struct CRITSECT *cs_unix; | |
1323 }; | |
1324 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1325 /* '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
|
1326 #undef CRITSECS_NEWTYPE |
08e71f6a7531
it seems that old CS is working better than newtype now... :)
arpi
parents:
8391
diff
changeset
|
1327 //#define CRITSECS_NEWTYPE 1 |
3128 | 1328 |
1329 #ifdef CRITSECS_NEWTYPE | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1330 /* 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
|
1331 /* 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
|
1332 #define CRITSECS_LIST_MAX 64 |
2579 | 1333 static struct critsecs_list_t critsecs_list[CRITSECS_LIST_MAX]; |
1334 | |
3465 | 1335 static int critsecs_get_pos(CRITICAL_SECTION *cs_win) |
2579 | 1336 { |
1337 int i; | |
3128 | 1338 |
2579 | 1339 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1340 if (critsecs_list[i].cs_win == cs_win) | |
26757
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1341 return i; |
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1342 return -1; |
2579 | 1343 } |
1344 | |
3465 | 1345 static int critsecs_get_unused(void) |
2579 | 1346 { |
1347 int i; | |
3128 | 1348 |
2579 | 1349 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1350 if (critsecs_list[i].cs_win == NULL) | |
26757
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1351 return i; |
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1352 return -1; |
2579 | 1353 } |
1354 | |
1355 struct CRITSECT *critsecs_get_unix(CRITICAL_SECTION *cs_win) | |
1356 { | |
1357 int i; | |
3128 | 1358 |
2579 | 1359 for (i=0; i < CRITSECS_LIST_MAX; i++) |
2670 | 1360 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
|
1361 return critsecs_list[i].cs_unix; |
0fdf04b07ecb
cosmetics: Remove pointless parentheses from return statements.
diego
parents:
26454
diff
changeset
|
1362 return NULL; |
2579 | 1363 } |
1364 #endif | |
1365 | |
3465 | 1366 static void WINAPI expInitializeCriticalSection(CRITICAL_SECTION* c) |
1 | 1367 { |
128 | 1368 dbgprintf("InitializeCriticalSection(0x%x)\n", c); |
3465 | 1369 /* if(sizeof(pthread_mutex_t)>sizeof(CRITICAL_SECTION)) |
1370 { | |
1371 printf(" ERROR:::: sizeof(pthread_mutex_t) is %d, expected <=%d!\n", | |
1372 sizeof(pthread_mutex_t), sizeof(CRITICAL_SECTION)); | |
1373 return; | |
1374 }*/ | |
1375 /* pthread_mutex_init((pthread_mutex_t*)c, NULL); */ | |
2579 | 1376 #ifdef CRITSECS_NEWTYPE |
1377 { | |
3465 | 1378 struct CRITSECT *cs; |
1379 int i = critsecs_get_unused(); | |
1380 | |
1381 if (i < 0) | |
1382 { | |
1383 printf("InitializeCriticalSection(%p) - no more space in list\n", c); | |
1384 return; | |
1385 } | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1386 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
|
1387 cs = malloc(sizeof(struct CRITSECT)); |
3465 | 1388 if (!cs) |
1389 { | |
1390 printf("InitializeCriticalSection(%p) - out of memory\n", c); | |
1391 return; | |
1392 } | |
1393 pthread_mutex_init(&cs->mutex, NULL); | |
30795 | 1394 pthread_cond_init(&cs->unlocked, NULL); |
1395 cs->lock_count = 0; | |
3465 | 1396 critsecs_list[i].cs_win = c; |
1397 critsecs_list[i].cs_unix = cs; | |
1398 dbgprintf("InitializeCriticalSection -> itemno=%d, cs_win=%p, cs_unix=%p\n", | |
1399 i, c, cs); | |
2579 | 1400 } |
3465 | 1401 #else |
2670 | 1402 { |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1403 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
|
1404 0, AREATYPE_CRITSECT); |
3465 | 1405 pthread_mutex_init(&cs->mutex, NULL); |
30795 | 1406 pthread_cond_init(&cs->unlocked, NULL); |
1407 cs->lock_count = 0; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1408 cs->deadbeef = 0xdeadbeef; |
7718 | 1409 *(void**)c = cs; |
2670 | 1410 } |
2579 | 1411 #endif |
1 | 1412 return; |
2579 | 1413 } |
1414 | |
30598
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1415 static void WINAPI expInitializeCriticalSectionAndSpinCount(CRITICAL_SECTION* c, DWORD spin) |
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1416 { |
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1417 expInitializeCriticalSection(c); |
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1418 } |
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
1419 |
3465 | 1420 static void WINAPI expEnterCriticalSection(CRITICAL_SECTION* c) |
1 | 1421 { |
2579 | 1422 #ifdef CRITSECS_NEWTYPE |
1423 struct CRITSECT* cs = critsecs_get_unix(c); | |
1424 #else | |
7718 | 1425 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1426 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1427 dbgprintf("EnterCriticalSection(0x%x) %p\n",c, cs); |
2069 | 1428 if (!cs) |
1429 { | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1430 dbgprintf("entered uninitialized critisec!\n"); |
2069 | 1431 expInitializeCriticalSection(c); |
2579 | 1432 #ifdef CRITSECS_NEWTYPE |
1433 cs=critsecs_get_unix(c); | |
1434 #else | |
7718 | 1435 cs = (*(struct CRITSECT**)c); |
2579 | 1436 #endif |
12074 | 1437 dbgprintf("Win32 Warning: Accessed uninitialized Critical Section (%p)!\n", c); |
2069 | 1438 } |
1 | 1439 pthread_mutex_lock(&(cs->mutex)); |
30795 | 1440 if (cs->lock_count > 0 && cs->id == pthread_self()) { |
1441 cs->lock_count++; | |
1442 } else { | |
1443 while (cs->lock_count != 0) { | |
1444 pthread_cond_wait(&(cs->unlocked), &(cs->mutex)); | |
1445 } | |
1446 cs->lock_count = 1; | |
1447 cs->id = pthread_self(); | |
1448 } | |
1449 pthread_mutex_unlock(&(cs->mutex)); | |
1 | 1450 return; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1451 } |
3465 | 1452 static void WINAPI expLeaveCriticalSection(CRITICAL_SECTION* c) |
1 | 1453 { |
2579 | 1454 #ifdef CRITSECS_NEWTYPE |
1455 struct CRITSECT* cs = critsecs_get_unix(c); | |
1456 #else | |
7718 | 1457 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1458 #endif |
3465 | 1459 // 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
|
1460 dbgprintf("LeaveCriticalSection(0x%x) 0x%x\n",c, cs); |
2069 | 1461 if (!cs) |
1462 { | |
12074 | 1463 dbgprintf("Win32 Warning: Leaving uninitialized Critical Section %p!!\n", c); |
2069 | 1464 return; |
1465 } | |
30795 | 1466 pthread_mutex_lock(&(cs->mutex)); |
1467 if (cs->lock_count == 0) { | |
1468 dbgprintf("Win32 Warning: Unlocking unlocked Critical Section %p!!\n", c); | |
1469 } else { | |
1470 cs->lock_count--; | |
11852
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1471 } |
30795 | 1472 if (cs->lock_count == 0) { |
1473 pthread_cond_signal(&(cs->unlocked)); | |
1474 } | |
1475 pthread_mutex_unlock(&(cs->mutex)); | |
1 | 1476 return; |
1477 } | |
8451 | 1478 |
1479 static void expfree(void* mem); /* forward declaration */ | |
1480 | |
3465 | 1481 static void WINAPI expDeleteCriticalSection(CRITICAL_SECTION *c) |
1 | 1482 { |
2579 | 1483 #ifdef CRITSECS_NEWTYPE |
1484 struct CRITSECT* cs = critsecs_get_unix(c); | |
1485 #else | |
7718 | 1486 struct CRITSECT* cs= (*(struct CRITSECT**)c); |
2579 | 1487 #endif |
3465 | 1488 // struct CRITSECT* cs=(struct CRITSECT*)c; |
128 | 1489 dbgprintf("DeleteCriticalSection(0x%x)\n",c); |
3465 | 1490 |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1491 if (!cs) |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1492 { |
12074 | 1493 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
|
1494 return; |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1495 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
1496 |
30795 | 1497 pthread_mutex_lock(&(cs->mutex)); |
1498 if (cs->lock_count > 0) | |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1499 { |
30795 | 1500 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
|
1501 } |
30795 | 1502 pthread_mutex_unlock(&(cs->mutex)); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1503 |
3465 | 1504 #ifndef GARBAGE |
128 | 1505 pthread_mutex_destroy(&(cs->mutex)); |
30795 | 1506 pthread_cond_destroy(&(cs->unlocked)); |
3465 | 1507 // released by GarbageCollector in my_relase otherwise |
1508 #endif | |
1509 my_release(cs); | |
2579 | 1510 #ifdef CRITSECS_NEWTYPE |
1511 { | |
3465 | 1512 int i = critsecs_get_pos(c); |
1513 | |
1514 if (i < 0) | |
1515 { | |
1516 printf("DeleteCriticalSection(%p) error (critsec not found)\n", c); | |
1517 return; | |
1518 } | |
1519 | |
1520 critsecs_list[i].cs_win = NULL; | |
1521 expfree(critsecs_list[i].cs_unix); | |
1522 critsecs_list[i].cs_unix = NULL; | |
1523 dbgprintf("DeleteCriticalSection -> itemno=%d\n", i); | |
2579 | 1524 } |
1525 #endif | |
1 | 1526 return; |
1527 } | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1528 static int WINAPI expGetCurrentThreadId(void) |
1 | 1529 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1530 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
|
1531 return pthread_self(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1532 } |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1533 static int WINAPI expGetCurrentProcess(void) |
128 | 1534 { |
1535 dbgprintf("GetCurrentProcess() => %d\n", getpid()); | |
1 | 1536 return getpid(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1537 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1538 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
1539 #ifdef CONFIG_QTX_CODECS |
3128 | 1540 // this version is required for Quicktime codecs (.qtx/.qts) to work. |
1541 // (they assume some pointers at FS: segment) | |
1542 | |
7386 | 1543 extern void* fs_seg; |
1544 | |
2779 | 1545 //static int tls_count; |
1546 static int tls_use_map[64]; | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1547 static int WINAPI expTlsAlloc(void) |
2779 | 1548 { |
1549 int i; | |
1550 for(i=0; i<64; i++) | |
1551 if(tls_use_map[i]==0) | |
1552 { | |
1553 tls_use_map[i]=1; | |
5234 | 1554 dbgprintf("TlsAlloc() => %d\n",i); |
2779 | 1555 return i; |
1556 } | |
5234 | 1557 dbgprintf("TlsAlloc() => -1 (ERROR)\n"); |
2779 | 1558 return -1; |
1559 } | |
1560 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1561 //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
|
1562 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
|
1563 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1564 dbgprintf("TlsSetValue(%d,0x%x) => 1\n",index,value); |
5234 | 1565 // if((index<0) || (index>64)) |
1566 if((index>=64)) | |
2779 | 1567 return 0; |
1568 *(void**)((char*)fs_seg+0x88+4*index) = value; | |
1569 return 1; | |
1570 } | |
1571 | |
5234 | 1572 static void* WINAPI expTlsGetValue(DWORD index) |
1573 { | |
1574 dbgprintf("TlsGetValue(%d)\n",index); | |
1575 // if((index<0) || (index>64)) | |
1576 if((index>=64)) return NULL; | |
1577 return *(void**)((char*)fs_seg+0x88+4*index); | |
2779 | 1578 } |
1579 | |
3465 | 1580 static int WINAPI expTlsFree(int idx) |
2779 | 1581 { |
3465 | 1582 int index = (int) idx; |
5234 | 1583 dbgprintf("TlsFree(%d)\n",index); |
2779 | 1584 if((index<0) || (index>64)) |
1585 return 0; | |
1586 tls_use_map[index]=0; | |
1587 return 1; | |
1588 } | |
1589 | |
1590 #else | |
2069 | 1591 struct tls_s { |
1 | 1592 void* value; |
1593 int used; | |
1594 struct tls_s* prev; | |
1595 struct tls_s* next; | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1596 }; |
2069 | 1597 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
1598 static void* WINAPI expTlsAlloc(void) |
1 | 1599 { |
7386 | 1600 if (g_tls == NULL) |
1 | 1601 { |
1602 g_tls=my_mreq(sizeof(tls_t), 0); | |
1603 g_tls->next=g_tls->prev=NULL; | |
1604 } | |
1605 else | |
1606 { | |
1607 g_tls->next=my_mreq(sizeof(tls_t), 0); | |
1608 g_tls->next->prev=g_tls; | |
1609 g_tls->next->next=NULL; | |
1610 g_tls=g_tls->next; | |
1611 } | |
128 | 1612 dbgprintf("TlsAlloc() => 0x%x\n", g_tls); |
2670 | 1613 if (g_tls) |
1614 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
|
1615 return g_tls; |
1 | 1616 } |
1617 | |
3465 | 1618 static int WINAPI expTlsSetValue(void* idx, void* value) |
1 | 1619 { |
3465 | 1620 tls_t* index = (tls_t*) idx; |
128 | 1621 int result; |
1 | 1622 if(index==0) |
128 | 1623 result=0; |
1624 else | |
1625 { | |
1626 index->value=value; | |
1627 result=1; | |
1628 } | |
1629 dbgprintf("TlsSetValue(index 0x%x, value 0x%x) => %d \n", index, value, result ); | |
1630 return result; | |
1 | 1631 } |
3465 | 1632 static void* WINAPI expTlsGetValue(void* idx) |
1 | 1633 { |
3465 | 1634 tls_t* index = (tls_t*) idx; |
128 | 1635 void* result; |
1 | 1636 if(index==0) |
128 | 1637 result=0; |
1638 else | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1639 result=index->value; |
128 | 1640 dbgprintf("TlsGetValue(index 0x%x) => 0x%x\n", index, result); |
1641 return result; | |
1 | 1642 } |
3465 | 1643 static int WINAPI expTlsFree(void* idx) |
1 | 1644 { |
3465 | 1645 tls_t* index = (tls_t*) idx; |
128 | 1646 int result; |
1 | 1647 if(index==0) |
128 | 1648 result=0; |
1649 else | |
1650 { | |
1651 if(index->next) | |
1652 index->next->prev=index->prev; | |
1653 if(index->prev) | |
3465 | 1654 index->prev->next=index->next; |
7386 | 1655 if (g_tls == index) |
1656 g_tls = index->prev; | |
128 | 1657 my_release((void*)index); |
1658 result=1; | |
1659 } | |
1660 dbgprintf("TlsFree(index 0x%x) => %d\n", index, result); | |
1661 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1662 } |
2779 | 1663 #endif |
1664 | |
3465 | 1665 static void* WINAPI expLocalAlloc(int flags, int size) |
1 | 1666 { |
3465 | 1667 void* z = my_mreq(size, (flags & GMEM_ZEROINIT)); |
1668 if (z == 0) | |
1 | 1669 printf("LocalAlloc() failed\n"); |
128 | 1670 dbgprintf("LocalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); |
1 | 1671 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1672 } |
2069 | 1673 |
3465 | 1674 static void* WINAPI expLocalReAlloc(int handle,int size, int flags) |
2069 | 1675 { |
3465 | 1676 void *newpointer; |
1677 int oldsize; | |
1678 | |
1679 newpointer=NULL; | |
1680 if (flags & LMEM_MODIFY) { | |
1681 dbgprintf("LocalReAlloc MODIFY\n"); | |
1682 return (void *)handle; | |
1683 } | |
1684 oldsize = my_size((void *)handle); | |
1685 newpointer = my_realloc((void *)handle,size); | |
1686 dbgprintf("LocalReAlloc(%x %d(old %d), flags 0x%x) => 0x%x\n", handle,size,oldsize, flags,newpointer); | |
1687 | |
1688 return newpointer; | |
2069 | 1689 } |
1690 | |
3465 | 1691 static void* WINAPI expLocalLock(void* z) |
1 | 1692 { |
128 | 1693 dbgprintf("LocalLock(0x%x) => 0x%x\n", z, z); |
1 | 1694 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1695 } |
128 | 1696 |
3465 | 1697 static void* WINAPI expGlobalAlloc(int flags, int size) |
1 | 1698 { |
1699 void* z; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1700 dbgprintf("GlobalAlloc(%d, flags 0x%X)\n", size, flags); |
3465 | 1701 |
1702 z=my_mreq(size, (flags & GMEM_ZEROINIT)); | |
1703 //z=calloc(size, 1); | |
1704 //z=malloc(size); | |
1 | 1705 if(z==0) |
128 | 1706 printf("GlobalAlloc() failed\n"); |
1707 dbgprintf("GlobalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); | |
1 | 1708 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1709 } |
3465 | 1710 static void* WINAPI expGlobalLock(void* z) |
1 | 1711 { |
128 | 1712 dbgprintf("GlobalLock(0x%x) => 0x%x\n", z, z); |
1 | 1713 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1714 } |
3128 | 1715 // pvmjpg20 - but doesn't work anyway |
3465 | 1716 static int WINAPI expGlobalSize(void* amem) |
3128 | 1717 { |
1718 int size = 100000; | |
1719 #ifdef GARBAGE | |
1720 alloc_header* header = last_alloc; | |
1721 alloc_header* mem = (alloc_header*) amem - 1; | |
1722 if (amem == 0) | |
3465 | 1723 return 0; |
3128 | 1724 pthread_mutex_lock(&memmut); |
1725 while (header) | |
1726 { | |
3465 | 1727 if (header->deadbeef != 0xdeadbeef) |
1728 { | |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
1729 dbgprintf("FATAL found corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt); |
3465 | 1730 break; |
1731 } | |
1732 | |
1733 if (header == mem) | |
1734 { | |
1735 size = header->size; | |
1736 break; | |
1737 } | |
1738 | |
1739 header = header->prev; | |
3128 | 1740 } |
1741 pthread_mutex_unlock(&memmut); | |
1742 #endif | |
1743 | |
1744 dbgprintf("GlobalSize(0x%x)\n", amem); | |
1745 return size; | |
1746 } | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1747 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1748 static int WINAPI expLoadIconA( long hinstance, char *name ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1749 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1750 dbgprintf("LoadIconA( %ld, 0x%x ) => 1\n",hinstance,name); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1751 return 1; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1752 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1753 |
3465 | 1754 static int WINAPI expLoadStringA(long instance, long id, void* buf, long size) |
1 | 1755 { |
128 | 1756 int result=LoadStringA(instance, id, buf, size); |
3465 | 1757 // if(buf) |
128 | 1758 dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d ( %s )\n", |
3465 | 1759 instance, id, buf, size, result, buf); |
1760 // else | |
1761 // dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d\n", | |
1762 // instance, id, buf, size, result); | |
128 | 1763 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1764 } |
1 | 1765 |
3465 | 1766 static long WINAPI expMultiByteToWideChar(long v1, long v2, char* s1, long siz1, short* s2, int siz2) |
1 | 1767 { |
1768 #warning FIXME | |
128 | 1769 int i; |
1770 int result; | |
1 | 1771 if(s2==0) |
3465 | 1772 result=1; |
128 | 1773 else |
1774 { | |
3465 | 1775 if(siz1>siz2/2)siz1=siz2/2; |
1776 for(i=1; i<=siz1; i++) | |
1777 { | |
1778 *s2=*s1; | |
1779 if(!*s1)break; | |
1780 s2++; | |
1781 s1++; | |
1782 } | |
1783 result=i; | |
128 | 1784 } |
1785 if(s1) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1786 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
|
1787 "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
|
1788 v1, v2, s1, s1, siz1, s2, siz2, result); |
128 | 1789 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1790 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
|
1791 "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
|
1792 v1, v2, siz1, s2, siz2, result); |
128 | 1793 return result; |
1794 } | |
1795 static void wch_print(const short* str) | |
1796 { | |
1797 dbgprintf(" src: "); | |
1798 while(*str)dbgprintf("%c", *str++); | |
1799 dbgprintf("\n"); | |
1 | 1800 } |
3465 | 1801 static long WINAPI expWideCharToMultiByte(long v1, long v2, short* s1, long siz1, |
1802 char* s2, int siz2, char* c3, int* siz3) | |
1 | 1803 { |
1804 int result; | |
128 | 1805 dbgprintf("WideCharToMultiByte(codepage %d, flags 0x%x, src 0x%x, src size %d, " |
3465 | 1806 "dest 0x%x, dest size %d, defch 0x%x, used_defch 0x%x)", v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1 | 1807 result=WideCharToMultiByte(v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1808 dbgprintf("=> %d\n", result); | |
2069 | 1809 //if(s1)wch_print(s1); |
128 | 1810 if(s2)dbgprintf(" dest: %s\n", s2); |
1 | 1811 return result; |
1812 } | |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1813 |
3465 | 1814 static long WINAPI expGetVersionExA(OSVERSIONINFOA* c) |
1 | 1815 { |
128 | 1816 dbgprintf("GetVersionExA(0x%x) => 1\n"); |
1817 c->dwOSVersionInfoSize=sizeof(*c); | |
1 | 1818 c->dwMajorVersion=4; |
128 | 1819 c->dwMinorVersion=0; |
1820 c->dwBuildNumber=0x4000457; | |
5234 | 1821 #if 1 |
2069 | 1822 // leave it here for testing win9x-only codecs |
1 | 1823 c->dwPlatformId=VER_PLATFORM_WIN32_WINDOWS; |
128 | 1824 strcpy(c->szCSDVersion, " B"); |
2069 | 1825 #else |
1826 c->dwPlatformId=VER_PLATFORM_WIN32_NT; // let's not make DLL assume that it can read CR* registers | |
1827 strcpy(c->szCSDVersion, "Service Pack 3"); | |
1828 #endif | |
128 | 1829 dbgprintf(" Major version: 4\n Minor version: 0\n Build number: 0x4000457\n" |
3465 | 1830 " Platform Id: VER_PLATFORM_WIN32_NT\n Version string: 'Service Pack 3'\n"); |
1 | 1831 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1832 } |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1833 |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1834 static long WINAPI expGetVersionExW(OSVERSIONINFOW* c) |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1835 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1836 char CSDVersion[128]; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1837 dbgprintf("GetVersionExW(0x%x) => 1\n"); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1838 c->dwOSVersionInfoSize=sizeof(*c); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1839 c->dwMajorVersion=5; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1840 c->dwMinorVersion=0; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1841 c->dwBuildNumber=0x5000457; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1842 #if 1 |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1843 // leave it here for testing win9x-only codecs |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1844 c->dwPlatformId=VER_PLATFORM_WIN32_WINDOWS; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1845 strcpy(CSDVersion, " B"); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1846 #else |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1847 c->dwPlatformId=VER_PLATFORM_WIN32_NT; // let's not make DLL assume that it can read CR* registers |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1848 strcpy(CSDVersion, "Service Pack 3"); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1849 #endif |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1850 MultiByteToWideChar(65001, 0x0, CSDVersion, -1, c->szCSDVersion, 128); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1851 dbgprintf(" Major version: %d\n Minor version: %d\n Build number: 0x%08x\n" |
30860 | 1852 " Platform Id: %s\n Version string: '%s'\n", |
1853 c->dwMajorVersion, c->dwMinorVersion, c->dwBuildNumber, | |
1854 (c->dwPlatformId==VER_PLATFORM_WIN32_WINDOWS ? "VER_PLATFORM_WIN32_WINDOWS" : | |
1855 (c->dwPlatformId==VER_PLATFORM_WIN32_NT ? "VER_PLATFORM_WIN32_NT" : "Unknown")), | |
1856 CSDVersion); | |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1857 return 1; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1858 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1859 |
3465 | 1860 static HANDLE WINAPI expCreateSemaphoreA(char* v1, long init_count, |
1861 long max_count, char* name) | |
1 | 1862 { |
128 | 1863 pthread_mutex_t *pm; |
1864 pthread_cond_t *pc; | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1865 HANDLE ret; |
24385 | 1866 /* |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1867 mutex_list* pp; |
3465 | 1868 printf("CreateSemaphoreA(%p = %s)\n", name, (name ? name : "<null>")); |
1869 pp=mlist; | |
1870 while(pp) | |
1871 { | |
1872 printf("%p => ", pp); | |
1873 pp=pp->prev; | |
1874 } | |
1875 printf("0\n"); | |
1876 */ | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1877 pthread_mutex_lock(&mlist_lock); |
128 | 1878 if(mlist!=NULL) |
1 | 1879 { |
128 | 1880 mutex_list* pp=mlist; |
1881 if(name!=NULL) | |
3465 | 1882 do |
128 | 1883 { |
1884 if((strcmp(pp->name, name)==0) && (pp->type==1)) | |
1885 { | |
3465 | 1886 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1887 v1, init_count, max_count, name, name, mlist); | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1888 ret = (HANDLE)mlist; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1889 pthread_mutex_unlock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1890 return ret; |
128 | 1891 } |
2069 | 1892 }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
|
1893 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1894 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
128 | 1895 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
|
1896 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 1897 pthread_cond_init(pc, NULL); |
1898 if(mlist==NULL) | |
1899 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1900 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1901 mlist->next=mlist->prev=NULL; |
1902 } | |
1903 else | |
1 | 1904 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1905 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1906 mlist->next->prev=mlist; |
1907 mlist->next->next=NULL; | |
1908 mlist=mlist->next; | |
3465 | 1909 // printf("new semaphore %p\n", mlist); |
1 | 1910 } |
128 | 1911 mlist->type=1; /* Type Semaphore */ |
1912 mlist->pm=pm; | |
1913 mlist->pc=pc; | |
1914 mlist->state=0; | |
1915 mlist->reset=0; | |
1916 mlist->semaphore=init_count; | |
1917 if(name!=NULL) | |
3465 | 1918 strncpy(mlist->name, name, 64); |
128 | 1919 else |
1920 mlist->name[0]=0; | |
1921 if(pm==NULL) | |
1922 dbgprintf("ERROR::: CreateSemaphoreA failure\n"); | |
1923 if(name) | |
3465 | 1924 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1925 v1, init_count, max_count, name, name, mlist); | |
128 | 1926 else |
3465 | 1927 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0) => 0x%x\n", |
1928 v1, init_count, max_count, mlist); | |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1929 ret = (HANDLE)mlist; |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1930 pthread_mutex_unlock(&mlist_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
1931 return ret; |
1 | 1932 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1933 |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1934 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
|
1935 long max_count, const WCHAR* name) |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1936 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1937 char ascii_name[256]; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1938 char *aname = NULL; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1939 if (name) { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1940 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
|
1941 aname = ascii_name; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1942 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1943 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
|
1944 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
1945 |
3465 | 1946 static long WINAPI expReleaseSemaphore(long hsem, long increment, long* prev_count) |
1 | 1947 { |
3465 | 1948 // The state of a semaphore object is signaled when its count |
1949 // is greater than zero and nonsignaled when its count is equal to zero | |
1950 // Each time a waiting thread is released because of the semaphore's signaled | |
1951 // state, the count of the semaphore is decreased by one. | |
128 | 1952 mutex_list *ml = (mutex_list *)hsem; |
1 | 1953 |
128 | 1954 pthread_mutex_lock(ml->pm); |
1955 if (prev_count != 0) *prev_count = ml->semaphore; | |
1956 if (ml->semaphore == 0) pthread_cond_signal(ml->pc); | |
1957 ml->semaphore += increment; | |
1958 pthread_mutex_unlock(ml->pm); | |
1959 dbgprintf("ReleaseSemaphore(semaphore 0x%x, increment %d, prev_count 0x%x) => 1\n", | |
3465 | 1960 hsem, increment, prev_count); |
128 | 1961 return 1; |
1 | 1962 } |
1963 | |
30811 | 1964 static HANDLE WINAPI expCreateMutexA(void *pSecAttr, |
1965 char bInitialOwner, const char *name) | |
1966 { | |
1967 pthread_mutex_t *pm; | |
1968 pthread_cond_t *pc; | |
1969 HANDLE ret; | |
1970 pthread_mutex_lock(&mlist_lock); | |
1971 if(mlist!=NULL) | |
1972 { | |
1973 mutex_list* pp=mlist; | |
1974 if(name!=NULL) | |
1975 do | |
1976 { | |
1977 if((strcmp(pp->name, name)==0) && (pp->type==2)) | |
1978 { | |
1979 dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n", pSecAttr, bInitialOwner, name, mlist); | |
1980 ret = (HANDLE)mlist; | |
1981 pthread_mutex_unlock(&mlist_lock); | |
1982 return ret; | |
1983 } | |
1984 }while((pp=pp->prev) != NULL); | |
1985 } | |
1986 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); | |
1987 pthread_mutex_init(pm, NULL); | |
1988 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); | |
1989 pthread_cond_init(pc, NULL); | |
1990 if(mlist==NULL) | |
1991 { | |
1992 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); | |
1993 mlist->next=mlist->prev=NULL; | |
1994 } | |
1995 else | |
1996 { | |
1997 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); | |
1998 mlist->next->prev=mlist; | |
1999 mlist->next->next=NULL; | |
2000 mlist=mlist->next; | |
2001 } | |
2002 mlist->type=2; /* Type Mutex */ | |
2003 mlist->pm=pm; | |
2004 mlist->pc=pc; | |
2005 mlist->state=0; | |
2006 mlist->reset=0; | |
2007 mlist->semaphore=0; | |
2008 if (bInitialOwner) { | |
2009 mlist->owner = pthread_self(); | |
2010 mlist->lock_count = 1; | |
2011 } else { | |
2012 mlist->owner = (pthread_t)0; | |
2013 mlist->lock_count = 0; | |
2014 } | |
2015 if(name!=NULL) | |
2016 strncpy(mlist->name, name, 64); | |
2017 else | |
2018 mlist->name[0]=0; | |
2019 if(pm==NULL) | |
2020 dbgprintf("ERROR::: CreateMutexA failure\n"); | |
2021 if(name) | |
2022 dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n", | |
2023 pSecAttr, bInitialOwner, name, mlist); | |
2024 else | |
2025 dbgprintf("CreateMutexA(0x%x, %d, NULL) => 0x%x\n", | |
2026 pSecAttr, bInitialOwner, mlist); | |
2027 ret = (HANDLE)mlist; | |
2028 pthread_mutex_unlock(&mlist_lock); | |
2029 return ret; | |
2030 } | |
2031 | |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2032 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
|
2033 { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2034 char ascii_name[256]; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2035 char *aname = NULL; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2036 if (name) { |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2037 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
|
2038 aname = ascii_name; |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2039 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2040 return expCreateMutexA(pSecAttr, bInitialOwner, aname); |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2041 } |
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
2042 |
30811 | 2043 static int WINAPI expReleaseMutex(HANDLE hMutex) |
2044 { | |
2045 mutex_list *ml = (mutex_list *)hMutex; | |
2046 | |
2047 pthread_mutex_lock(ml->pm); | |
2048 if (--ml->lock_count == 0) pthread_cond_signal(ml->pc); | |
2049 pthread_mutex_unlock(ml->pm); | |
2050 return 1; | |
2051 } | |
1 | 2052 |
30819 | 2053 static DWORD WINAPI expSignalObjectAndWait(HANDLE hObjectToSignal, |
2054 HANDLE hObjectToWaitOn, | |
2055 DWORD dwMilliseconds, | |
2056 WIN_BOOL bAlertable) { | |
2057 mutex_list* mlist = (mutex_list*)hObjectToSignal; | |
2058 | |
2059 switch (mlist->type) { | |
2060 case 0: // Event | |
2061 expSetEvent(mlist); | |
2062 break; | |
2063 case 1: // Semaphore | |
2064 expReleaseSemaphore(mlist, 1, NULL); | |
2065 break; | |
2066 case 2: // Mutex | |
2067 expReleaseMutex(mlist); | |
2068 break; | |
2069 default: | |
2070 dbgprintf("Signalling unknown object type %d!\n", hObjectToSignal); | |
2071 } | |
2072 return expWaitForSingleObject(hObjectToWaitOn, dwMilliseconds); | |
2073 } | |
2074 | |
3465 | 2075 static long WINAPI expRegOpenKeyExA(long key, const char* subkey, long reserved, long access, int* newkey) |
1 | 2076 { |
128 | 2077 long result=RegOpenKeyExA(key, subkey, reserved, access, newkey); |
2078 dbgprintf("RegOpenKeyExA(key 0x%x, subkey %s, reserved %d, access 0x%x, pnewkey 0x%x) => %d\n", | |
3465 | 2079 key, subkey, reserved, access, newkey, result); |
128 | 2080 if(newkey)dbgprintf(" New key: 0x%x\n", *newkey); |
2081 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2082 } |
3465 | 2083 static long WINAPI expRegCloseKey(long key) |
1 | 2084 { |
128 | 2085 long result=RegCloseKey(key); |
2086 dbgprintf("RegCloseKey(0x%x) => %d\n", key, result); | |
2087 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2088 } |
3465 | 2089 static long WINAPI expRegQueryValueExA(long key, const char* value, int* reserved, int* type, int* data, int* count) |
1 | 2090 { |
128 | 2091 long result=RegQueryValueExA(key, value, reserved, type, data, count); |
2092 dbgprintf("RegQueryValueExA(key 0x%x, value %s, reserved 0x%x, data 0x%x, count 0x%x)" | |
3465 | 2093 " => 0x%x\n", key, value, reserved, data, count, result); |
128 | 2094 if(data && count)dbgprintf(" read %d bytes: '%s'\n", *count, data); |
2095 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2096 } |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2097 |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2098 //from wine source dlls/advapi32/registry.c |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2099 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
|
2100 { |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2101 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
|
2102 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
|
2103 KEY_ALL_ACCESS , NULL, retkey, NULL ); |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2104 } |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
2105 |
3465 | 2106 static long WINAPI expRegCreateKeyExA(long key, const char* name, long reserved, |
2107 void* classs, long options, long security, | |
2108 void* sec_attr, int* newkey, int* status) | |
1 | 2109 { |
128 | 2110 long result=RegCreateKeyExA(key, name, reserved, classs, options, security, sec_attr, newkey, status); |
2111 dbgprintf("RegCreateKeyExA(key 0x%x, name 0x%x='%s', reserved=0x%x," | |
3465 | 2112 " 0x%x, 0x%x, 0x%x, newkey=0x%x, status=0x%x) => %d\n", |
2113 key, name, name, reserved, classs, options, security, sec_attr, newkey, status, result); | |
128 | 2114 if(!result && newkey) dbgprintf(" New key: 0x%x\n", *newkey); |
2115 if(!result && status) dbgprintf(" New key status: 0x%x\n", *status); | |
2116 return result; | |
1 | 2117 } |
3465 | 2118 static long WINAPI expRegSetValueExA(long key, const char* name, long v1, long v2, void* data, long size) |
1 | 2119 { |
128 | 2120 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
|
2121 dbgprintf("RegSetValueExA(key 0x%x, name '%s', 0x%x, 0x%x, data 0x%x -> 0x%x '%s', size=%d) => %d", |
3465 | 2122 key, name, v1, v2, data, *(int*)data, data, size, result); |
128 | 2123 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2124 } |
1 | 2125 |
3465 | 2126 static long WINAPI expRegOpenKeyA (long hKey, LPCSTR lpSubKey, int* phkResult) |
3134 | 2127 { |
128 | 2128 long result=RegOpenKeyExA(hKey, lpSubKey, 0, 0, phkResult); |
2129 dbgprintf("RegOpenKeyExA(key 0x%x, subkey '%s', 0x%x) => %d\n", | |
3465 | 2130 hKey, lpSubKey, phkResult, result); |
128 | 2131 if(!result && phkResult) dbgprintf(" New key: 0x%x\n", *phkResult); |
2132 return result; | |
1 | 2133 } |
2134 | |
3465 | 2135 static DWORD WINAPI expRegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count, |
2136 LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count) | |
2069 | 2137 { |
2138 return RegEnumValueA(hkey, index, value, val_count, | |
2139 reserved, type, data, count); | |
2140 } | |
2141 | |
3465 | 2142 static DWORD WINAPI expRegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, |
2143 LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, | |
2144 LPFILETIME lpftLastWriteTime) | |
2145 { | |
2146 return RegEnumKeyExA(hKey, dwIndex, lpName, lpcbName, lpReserved, lpClass, | |
2147 lpcbClass, lpftLastWriteTime); | |
2148 } | |
2149 | |
2150 static long WINAPI expQueryPerformanceCounter(long long* z) | |
1 | 2151 { |
2152 longcount(z); | |
128 | 2153 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
|
2154 return 1; |
1 | 2155 } |
2156 | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2157 /* |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2158 * 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
|
2159 */ |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2160 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
|
2161 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
|
2162 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
|
2163 LPDWORD security, FILETIME *modif ) |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2164 { |
13182 | 2165 return ERROR_SUCCESS; |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2166 } |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2167 |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
2168 /* |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2169 * 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
|
2170 */ |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2171 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
|
2172 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2173 double freq=-1; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2174 FILE *f; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2175 char line[200]; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2176 char *s,*value; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2177 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2178 f = fopen ("/proc/cpuinfo", "r"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2179 if (f != NULL) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2180 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
|
2181 /* 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
|
2182 if (!(value = strchr(line,':'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2183 continue; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2184 /* terminate the valuename */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2185 *value++ = '\0'; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2186 /* skip any leading spaces */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2187 while (*value==' ') value++; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2188 if ((s=strchr(value,'\n'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2189 *s='\0'; |
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 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
|
2192 && sscanf(value, "%lf", &freq) == 1) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2193 freq*=1000; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2194 break; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2195 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2196 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2197 fclose(f); |
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 return freq; |
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 |
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 solaris_kstat_freq(void) |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2204 { |
1679
73c8f54305b1
Add a few ifdefs, so that the code compiles on old solaris releases (2.6 and 7)
jkeil
parents:
1543
diff
changeset
|
2205 #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
|
2206 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2207 * 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
|
2208 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2209 kstat_ctl_t *kc; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2210 kstat_t *ksp; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2211 kstat_named_t *kdata; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2212 int mhz = 0; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2213 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2214 kc = kstat_open(); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2215 if (kc != NULL) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2216 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2217 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
|
2218 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2219 /* 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
|
2220 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
|
2221 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2222 /* 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
|
2223 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
|
2224 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2225 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2226 * 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
|
2227 * data type |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2228 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2229 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
|
2230 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
|
2231 mhz = kdata->value.i32; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2232 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2233 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2234 kstat_close(kc); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2235 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2236 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2237 if (mhz > 0) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2238 return mhz * 1000.; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2239 #endif /* HAVE_LIBKSTAT */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2240 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
|
2241 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2242 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2243 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2244 * 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
|
2245 */ |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2246 static double tsc_freq(void) |
1 | 2247 { |
128 | 2248 static double ofreq=0.0; |
2249 int i; | |
1 | 2250 int x,y; |
128 | 2251 i=time(NULL); |
2252 if (ofreq != 0.0) return ofreq; | |
1 | 2253 while(i==time(NULL)); |
2254 x=localcount(); | |
2255 i++; | |
2256 while(i==time(NULL)); | |
2257 y=localcount(); | |
128 | 2258 ofreq = (double)(y-x)/1000.; |
2259 return ofreq; | |
1 | 2260 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2261 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2262 static double CPU_Freq(void) |
1 | 2263 { |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2264 double freq; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2265 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2266 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
|
2267 return freq; |
1 | 2268 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2269 if ((freq = solaris_kstat_freq()) > 0) |
1 | 2270 return freq; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2271 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2272 return tsc_freq(); |
1 | 2273 } |
2274 | |
3465 | 2275 static long WINAPI expQueryPerformanceFrequency(long long* z) |
1 | 2276 { |
2277 *z=(long long)CPU_Freq(); | |
128 | 2278 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
|
2279 return 1; |
1 | 2280 } |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2281 static long WINAPI exptimeGetTime(void) |
1 | 2282 { |
2283 struct timeval t; | |
128 | 2284 long result; |
1 | 2285 gettimeofday(&t, 0); |
128 | 2286 result=1000*t.tv_sec+t.tv_usec/1000; |
2287 dbgprintf("timeGetTime() => %d\n", result); | |
2288 return result; | |
1 | 2289 } |
3465 | 2290 static void* WINAPI expLocalHandle(void* v) |
1 | 2291 { |
128 | 2292 dbgprintf("LocalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2293 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2294 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2295 |
3465 | 2296 static void* WINAPI expGlobalHandle(void* v) |
1 | 2297 { |
128 | 2298 dbgprintf("GlobalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2299 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2300 } |
3465 | 2301 static int WINAPI expGlobalUnlock(void* v) |
1 | 2302 { |
128 | 2303 dbgprintf("GlobalUnlock(0x%x) => 1\n", v); |
1 | 2304 return 1; |
2305 } | |
3465 | 2306 static void* WINAPI expGlobalFree(void* v) |
1 | 2307 { |
128 | 2308 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
|
2309 my_release(v); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2310 //free(v); |
1 | 2311 return 0; |
128 | 2312 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2313 |
3465 | 2314 static void* WINAPI expGlobalReAlloc(void* v, int size, int flags) |
128 | 2315 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2316 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
|
2317 //void* result=realloc(v, size); |
128 | 2318 dbgprintf("GlobalReAlloc(0x%x, size %d, flags 0x%x) => 0x%x\n", v,size,flags,result); |
2319 return result; | |
2320 } | |
1 | 2321 |
3465 | 2322 static int WINAPI expLocalUnlock(void* v) |
1 | 2323 { |
128 | 2324 dbgprintf("LocalUnlock(0x%x) => 1\n", v); |
1 | 2325 return 1; |
2326 } | |
3465 | 2327 // |
2328 static void* WINAPI expLocalFree(void* v) | |
1 | 2329 { |
128 | 2330 dbgprintf("LocalFree(0x%x) => 0\n", v); |
1 | 2331 my_release(v); |
2332 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2333 } |
3465 | 2334 static HRSRC WINAPI expFindResourceA(HMODULE module, char* name, char* type) |
1 | 2335 { |
3465 | 2336 HRSRC result; |
2337 | |
2338 result=FindResourceA(module, name, type); | |
4545 | 2339 dbgprintf("FindResourceA(module 0x%x, name 0x%x(%s), type 0x%x(%s)) => 0x%x\n", |
2340 module, name, HIWORD(name) ? name : "UNICODE", type, HIWORD(type) ? type : "UNICODE", result); | |
128 | 2341 return result; |
1 | 2342 } |
3465 | 2343 |
2344 static HGLOBAL WINAPI expLoadResource(HMODULE module, HRSRC res) | |
1 | 2345 { |
128 | 2346 HGLOBAL result=LoadResource(module, res); |
2347 dbgprintf("LoadResource(module 0x%x, resource 0x%x) => 0x%x\n", module, res, result); | |
2348 return result; | |
1 | 2349 } |
3465 | 2350 static void* WINAPI expLockResource(long res) |
1 | 2351 { |
128 | 2352 void* result=LockResource(res); |
2353 dbgprintf("LockResource(0x%x) => 0x%x\n", res, result); | |
2354 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2355 } |
3465 | 2356 static int WINAPI expFreeResource(long res) |
1 | 2357 { |
128 | 2358 int result=FreeResource(res); |
2359 dbgprintf("FreeResource(0x%x) => %d\n", res, result); | |
2360 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2361 } |
1 | 2362 //bool fun(HANDLE) |
2363 //!0 on success | |
3465 | 2364 static int WINAPI expCloseHandle(long v1) |
1 | 2365 { |
128 | 2366 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
|
2367 /* 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
|
2368 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
|
2369 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
|
2370 return 0; |
1 | 2371 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2372 } |
1 | 2373 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2374 static const char* WINAPI expGetCommandLineA(void) |
1 | 2375 { |
128 | 2376 dbgprintf("GetCommandLineA() => \"c:\\aviplay.exe\"\n"); |
1 | 2377 return "c:\\aviplay.exe"; |
2378 } | |
128 | 2379 static short envs[]={'p', 'a', 't', 'h', ' ', 'c', ':', '\\', 0, 0}; |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2380 static LPWSTR WINAPI expGetEnvironmentStringsW(void) |
1 | 2381 { |
3465 | 2382 dbgprintf("GetEnvironmentStringsW() => 0\n", envs); |
2383 return 0; | |
1 | 2384 } |
3465 | 2385 static void * WINAPI expRtlZeroMemory(void *p, size_t len) |
121 | 2386 { |
2387 void* result=memset(p,0,len); | |
2388 dbgprintf("RtlZeroMemory(0x%x, len %d) => 0x%x\n",p,len,result); | |
2389 return result; | |
2390 } | |
3465 | 2391 static void * WINAPI expRtlMoveMemory(void *dst, void *src, size_t len) |
121 | 2392 { |
2393 void* result=memmove(dst,src,len); | |
2394 dbgprintf("RtlMoveMemory (dest 0x%x, src 0x%x, len %d) => 0x%x\n",dst,src,len,result); | |
2395 return result; | |
2396 } | |
2397 | |
3465 | 2398 static void * WINAPI expRtlFillMemory(void *p, int ch, size_t len) |
121 | 2399 { |
2400 void* result=memset(p,ch,len); | |
2401 dbgprintf("RtlFillMemory(0x%x, char 0x%x, len %d) => 0x%x\n",p,ch,len,result); | |
2402 return result; | |
2403 } | |
3465 | 2404 static int WINAPI expFreeEnvironmentStringsW(short* strings) |
1 | 2405 { |
128 | 2406 dbgprintf("FreeEnvironmentStringsW(0x%x) => 1\n", strings); |
1 | 2407 return 1; |
2408 } | |
3465 | 2409 static int WINAPI expFreeEnvironmentStringsA(char* strings) |
128 | 2410 { |
3465 | 2411 dbgprintf("FreeEnvironmentStringsA(0x%x) => 1\n", strings); |
2412 return 1; | |
128 | 2413 } |
3465 | 2414 |
128 | 2415 static const char ch_envs[]= |
3465 | 2416 "__MSVCRT_HEAP_SELECT=__GLOBAL_HEAP_SELECTED,1\r\n" |
2417 "PATH=C:\\;C:\\windows\\;C:\\windows\\system\r\n"; | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
2418 static LPCSTR WINAPI expGetEnvironmentStrings(void) |
1 | 2419 { |
128 | 2420 dbgprintf("GetEnvironmentStrings() => 0x%x\n", ch_envs); |
2421 return (LPCSTR)ch_envs; | |
3465 | 2422 // dbgprintf("GetEnvironmentStrings() => 0\n"); |
2423 // return 0; | |
1 | 2424 } |
2425 | |
3465 | 2426 static int WINAPI expGetStartupInfoA(STARTUPINFOA *s) |
1 | 2427 { |
128 | 2428 dbgprintf("GetStartupInfoA(0x%x) => 1\n"); |
1 | 2429 memset(s, 0, sizeof(*s)); |
2430 s->cb=sizeof(*s); | |
3465 | 2431 // s->lpReserved="Reserved"; |
2432 // s->lpDesktop="Desktop"; | |
2433 // s->lpTitle="Title"; | |
2434 // s->dwX=s->dwY=0; | |
2435 // s->dwXSize=s->dwYSize=200; | |
2436 s->dwFlags=s->wShowWindow=1; | |
2437 // s->hStdInput=s->hStdOutput=s->hStdError=0x1234; | |
128 | 2438 dbgprintf(" cb=%d\n", s->cb); |
2439 dbgprintf(" lpReserved='%s'\n", s->lpReserved); | |
2440 dbgprintf(" lpDesktop='%s'\n", s->lpDesktop); | |
2441 dbgprintf(" lpTitle='%s'\n", s->lpTitle); | |
2442 dbgprintf(" dwX=%d dwY=%d dwXSize=%d dwYSize=%d\n", | |
3465 | 2443 s->dwX, s->dwY, s->dwXSize, s->dwYSize); |
128 | 2444 dbgprintf(" dwXCountChars=%d dwYCountChars=%d dwFillAttribute=%d\n", |
3465 | 2445 s->dwXCountChars, s->dwYCountChars, s->dwFillAttribute); |
128 | 2446 dbgprintf(" dwFlags=0x%x wShowWindow=0x%x cbReserved2=0x%x\n", |
3465 | 2447 s->dwFlags, s->wShowWindow, s->cbReserved2); |
128 | 2448 dbgprintf(" lpReserved2=0x%x hStdInput=0x%x hStdOutput=0x%x hStdError=0x%x\n", |
3465 | 2449 s->lpReserved2, s->hStdInput, s->hStdOutput, s->hStdError); |
1 | 2450 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2451 } |
1 | 2452 |
3465 | 2453 static int WINAPI expGetStdHandle(int z) |
1 | 2454 { |
3465 | 2455 dbgprintf("GetStdHandle(0x%x) => 0x%x\n", z+0x1234); |
2456 return z+0x1234; | |
1 | 2457 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2458 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2459 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2460 #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
|
2461 #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
|
2462 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2463 |
3465 | 2464 static int WINAPI expGetFileType(int handle) |
1 | 2465 { |
3465 | 2466 dbgprintf("GetFileType(0x%x) => 0x3 = pipe\n", handle); |
2467 return 0x3; | |
1 | 2468 } |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2469 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2470 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
|
2471 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2472 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
|
2473 if (strstr(filename, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2474 return FILE_ATTRIBUTE_SYSTEM; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2475 return FILE_ATTRIBUTE_NORMAL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2476 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2477 #endif |
3465 | 2478 static int WINAPI expSetHandleCount(int count) |
1 | 2479 { |
128 | 2480 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
|
2481 return 1; |
1 | 2482 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2483 static int WINAPI expGetACP(void) |
1 | 2484 { |
128 | 2485 dbgprintf("GetACP() => 0\n"); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2486 return 0; |
1 | 2487 } |
3465 | 2488 static int WINAPI expGetModuleFileNameA(int module, char* s, int len) |
1 | 2489 { |
2490 WINE_MODREF *mr; | |
128 | 2491 int result; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2492 //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
|
2493 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2494 if (module == 0 && len >= 12) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2495 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2496 /* return caller program name */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2497 strcpy(s, "aviplay.dll"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2498 result=1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2499 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2500 else if(s==0) |
128 | 2501 result=0; |
2502 else | |
3465 | 2503 if(len<35) |
2504 result=0; | |
128 | 2505 else |
3465 | 2506 { |
2507 result=1; | |
2508 strcpy(s, "c:\\windows\\system\\"); | |
2509 mr=MODULE32_LookupHMODULE(module); | |
2510 if(mr==0)//oops | |
2511 strcat(s, "aviplay.dll"); | |
2512 else | |
2513 if(strrchr(mr->filename, '/')==NULL) | |
2514 strcat(s, mr->filename); | |
2515 else | |
2516 strcat(s, strrchr(mr->filename, '/')+1); | |
2517 } | |
128 | 2518 if(!s) |
3465 | 2519 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d\n", |
2520 module, s, len, result); | |
1 | 2521 else |
3465 | 2522 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d ( '%s' )\n", |
2523 module, s, len, result, s); | |
128 | 2524 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2525 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2526 |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2527 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
|
2528 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2529 int result = 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2530 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2531 if (s && len) { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2532 av_strlcpy(s, "aviplay.dll", len); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2533 result = strlen(s); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2534 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2535 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2536 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
|
2537 process, module, s, len, result); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2538 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2539 return result; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2540 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2541 |
3465 | 2542 static int WINAPI expSetUnhandledExceptionFilter(void* filter) |
1 | 2543 { |
128 | 2544 dbgprintf("SetUnhandledExceptionFilter(0x%x) => 1\n", filter); |
1 | 2545 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
|
2546 } |
2069 | 2547 |
3465 | 2548 static int WINAPI expLoadLibraryA(char* name) |
1 | 2549 { |
2069 | 2550 int result = 0; |
713 | 2551 char* lastbc; |
2552 if (!name) | |
2553 return -1; | |
2554 // we skip to the last backslash | |
2555 // this is effectively eliminating weird characters in | |
2556 // the text output windows | |
2069 | 2557 |
713 | 2558 lastbc = strrchr(name, '\\'); |
2559 if (lastbc) | |
2560 { | |
3465 | 2561 int i; |
2562 lastbc++; | |
713 | 2563 for (i = 0; 1 ;i++) |
2564 { | |
2565 name[i] = *lastbc++; | |
2566 if (!name[i]) | |
2567 break; | |
2568 } | |
2569 } | |
2069 | 2570 if(strncmp(name, "c:\\windows\\", 11)==0) name += 11; |
1416 | 2571 if(strncmp(name, ".\\", 2)==0) name += 2; |
2069 | 2572 |
2573 dbgprintf("Entering LoadLibraryA(%s)\n", name); | |
3465 | 2574 |
3440 | 2575 // PIMJ and VIVO audio are loading kernel32.dll |
2576 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
|
2577 return MODULE_HANDLE_kernel32; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2578 // return ERROR_SUCCESS; /* yeah, we have also the kernel32 calls */ |
3457 | 2579 /* 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
|
2580 |
5234 | 2581 if (strcasecmp(name, "user32.dll") == 0 || strcasecmp(name, "user32") == 0) |
2582 // return MODULE_HANDLE_kernel32; | |
2583 return MODULE_HANDLE_user32; | |
2584 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2585 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2586 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
|
2587 return MODULE_HANDLE_wininet; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2588 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
|
2589 return MODULE_HANDLE_ddraw; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2590 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
|
2591 return MODULE_HANDLE_advapi32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2592 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2593 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2594 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
|
2595 return MODULE_HANDLE_comdlg32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2596 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
|
2597 return MODULE_HANDLE_msvcrt; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2598 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
|
2599 return MODULE_HANDLE_ole32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2600 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
|
2601 return MODULE_HANDLE_winmm; |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2602 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
|
2603 return MODULE_HANDLE_psapi; |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2604 |
2069 | 2605 result=LoadLibraryA(name); |
2606 dbgprintf("Returned LoadLibraryA(0x%x='%s'), def_path=%s => 0x%x\n", name, name, def_path, result); | |
2607 | |
128 | 2608 return result; |
2069 | 2609 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2610 |
3465 | 2611 static int WINAPI expFreeLibrary(int module) |
1 | 2612 { |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2613 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2614 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
|
2615 #else |
128 | 2616 int result=FreeLibrary(module); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2617 #endif |
128 | 2618 dbgprintf("FreeLibrary(0x%x) => %d\n", module, result); |
2619 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2620 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2621 |
3465 | 2622 static void* WINAPI expGetProcAddress(HMODULE mod, char* name) |
1 | 2623 { |
2069 | 2624 void* result; |
5234 | 2625 switch(mod){ |
2626 case MODULE_HANDLE_kernel32: | |
2627 result=LookupExternalByName("kernel32.dll", name); break; | |
2628 case MODULE_HANDLE_user32: | |
2629 result=LookupExternalByName("user32.dll", name); break; | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2630 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2631 case MODULE_HANDLE_wininet: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2632 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
|
2633 case MODULE_HANDLE_ddraw: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2634 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
|
2635 case MODULE_HANDLE_advapi32: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2636 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
|
2637 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2638 case MODULE_HANDLE_comdlg32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2639 result=LookupExternalByName("comdlg32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2640 case MODULE_HANDLE_msvcrt: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2641 result=LookupExternalByName("msvcrt.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2642 case MODULE_HANDLE_ole32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2643 result=LookupExternalByName("ole32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2644 case MODULE_HANDLE_winmm: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2645 result=LookupExternalByName("winmm.dll", name); break; |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2646 case MODULE_HANDLE_psapi: |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
2647 result=LookupExternalByName("psapi.dll", name); break; |
5234 | 2648 default: |
128 | 2649 result=GetProcAddress(mod, name); |
5234 | 2650 } |
22476 | 2651 if((unsigned int)name > 0xffff) |
2652 dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result); | |
2653 else | |
2654 dbgprintf("GetProcAddress(0x%x, '%d') => 0x%x\n", mod, (int)name, result); | |
128 | 2655 return result; |
2069 | 2656 } |
1 | 2657 |
3465 | 2658 static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr, |
2659 long flProtect, long dwMaxHigh, | |
2660 long dwMaxLow, const char* name) | |
1 | 2661 { |
128 | 2662 long result=CreateFileMappingA(hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name); |
2663 if(!name) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2664 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
|
2665 "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
|
2666 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, result); |
128 | 2667 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2668 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
|
2669 "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
|
2670 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name, name, result); |
128 | 2671 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2672 } |
1 | 2673 |
3465 | 2674 static long WINAPI expOpenFileMappingA(long hFile, long hz, const char* name) |
1 | 2675 { |
128 | 2676 long result=OpenFileMappingA(hFile, hz, name); |
2677 if(!name) | |
2678 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0) => %d\n", | |
3465 | 2679 hFile, hz, result); |
128 | 2680 else |
2681 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0x%x='%s') => %d\n", | |
3465 | 2682 hFile, hz, name, name, result); |
128 | 2683 return result; |
1 | 2684 } |
2685 | |
3465 | 2686 static void* WINAPI expMapViewOfFile(HANDLE file, DWORD mode, DWORD offHigh, |
2687 DWORD offLow, DWORD size) | |
1 | 2688 { |
128 | 2689 dbgprintf("MapViewOfFile(0x%x, 0x%x, 0x%x, 0x%x, size %d) => 0x%x\n", |
3465 | 2690 file,mode,offHigh,offLow,size,(char*)file+offLow); |
1 | 2691 return (char*)file+offLow; |
2692 } | |
2693 | |
3465 | 2694 static void* WINAPI expUnmapViewOfFile(void* view) |
1 | 2695 { |
128 | 2696 dbgprintf("UnmapViewOfFile(0x%x) => 0\n", view); |
1 | 2697 return 0; |
2698 } | |
2699 | |
3465 | 2700 static void* WINAPI expSleep(int time) |
2701 { | |
2702 #if HAVE_NANOSLEEP | |
2703 /* solaris doesn't have thread safe usleep */ | |
2704 struct timespec tsp; | |
2705 tsp.tv_sec = time / 1000000; | |
2706 tsp.tv_nsec = (time % 1000000) * 1000; | |
2707 nanosleep(&tsp, NULL); | |
2708 #else | |
2709 usleep(time); | |
2710 #endif | |
2711 dbgprintf("Sleep(%d) => 0\n", time); | |
2712 return 0; | |
2713 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2714 |
3465 | 2715 // why does IV32 codec want to call this? I don't know ... |
2716 static int WINAPI expCreateCompatibleDC(int hdc) | |
1 | 2717 { |
3465 | 2718 int dc = 0;//0x81; |
2719 //dbgprintf("CreateCompatibleDC(%d) => 0x81\n", hdc); | |
2720 dbgprintf("CreateCompatibleDC(%d) => %d\n", hdc, dc); | |
2721 return dc; | |
2722 } | |
2723 | |
2724 static int WINAPI expGetDeviceCaps(int hdc, int unk) | |
2725 { | |
2726 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
|
2727 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2728 #define BITSPIXEL 12 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2729 #define PLANES 14 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2730 if (unk == BITSPIXEL) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2731 return 24; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2732 if (unk == PLANES) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2733 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2734 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2735 return 1; |
3465 | 2736 } |
2737 | |
2738 static WIN_BOOL WINAPI expDeleteDC(int hdc) | |
2739 { | |
2740 dbgprintf("DeleteDC(0x%x) => 0\n", hdc); | |
2741 if (hdc == 0x81) | |
2742 return 1; | |
1 | 2743 return 0; |
2744 } | |
3465 | 2745 |
2746 static WIN_BOOL WINAPI expDeleteObject(int hdc) | |
1 | 2747 { |
3465 | 2748 dbgprintf("DeleteObject(0x%x) => 1\n", hdc); |
2749 /* FIXME - implement code here */ | |
2750 return 1; | |
1 | 2751 } |
2752 | |
3465 | 2753 /* btvvc32.drv wants this one */ |
2754 static void* WINAPI expGetWindowDC(int hdc) | |
1 | 2755 { |
3465 | 2756 dbgprintf("GetWindowDC(%d) => 0x0\n", hdc); |
3128 | 2757 return 0; |
2758 } | |
2759 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
2760 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2761 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
|
2762 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2763 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
|
2764 /* (win == 0) => desktop */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2765 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2766 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2767 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2768 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2769 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2770 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2771 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2772 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
|
2773 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2774 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
|
2775 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2776 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2777 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2778 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
|
2779 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2780 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
|
2781 return 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 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2784 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
|
2785 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2786 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
|
2787 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2788 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2789 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2790 static int WINAPI expEnumDisplayMonitors(void *dc, RECT *r, |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2791 int WINAPI (*callback_proc)(), void *callback_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2792 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2793 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
|
2794 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
|
2795 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
|
2796 } |
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 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2799 typedef struct tagMONITORINFO { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2800 DWORD cbSize; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2801 RECT rcMonitor; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2802 RECT rcWork; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2803 DWORD dwFlags; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2804 } MONITORINFO, *LPMONITORINFO; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2805 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2806 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2807 #define CCHDEVICENAME 8 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2808 typedef struct tagMONITORINFOEX { |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2809 DWORD cbSize; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2810 RECT rcMonitor; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2811 RECT rcWork; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2812 DWORD dwFlags; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2813 TCHAR szDevice[CCHDEVICENAME]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2814 } MONITORINFOEX, *LPMONITORINFOEX; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2815 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2816 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
|
2817 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2818 dbgprintf("GetMonitorInfoA(0x%x, 0x%x) => 1\n", mon, lpmi); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2819 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2820 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
|
2821 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
|
2822 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
|
2823 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
|
2824 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2825 lpmi->dwFlags = 1; /* primary monitor */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2826 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2827 if (lpmi->cbSize == sizeof(MONITORINFOEX)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2828 { |
8451 | 2829 LPMONITORINFOEX lpmiex = (LPMONITORINFOEX)lpmi; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2830 dbgprintf("MONITORINFOEX!\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2831 strncpy(lpmiex->szDevice, "Monitor1", CCHDEVICENAME); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2832 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
2833 |
8279
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 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
|
2838 void *dispdev, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2839 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2840 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
|
2841 device, device, devnum, dispdev, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2842 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2843 } |
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 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
|
2846 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2847 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
|
2848 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2849 } |
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 static HWND WINAPI expGetActiveWindow(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2852 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2853 dbgprintf("GetActiveWindow() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2854 return (HWND)0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2855 } |
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 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
|
2858 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2859 strncat(classname, "QuickTime", maxcount); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2860 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
|
2861 win, classname, maxcount, strlen(classname)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2862 return strlen(classname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2863 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2864 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2865 #define LPWNDCLASS void * |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2866 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
|
2867 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2868 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
|
2869 classname, classname, wndclass); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2870 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2871 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2872 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2873 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
|
2874 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2875 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
|
2876 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2877 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2878 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2879 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
|
2880 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2881 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
|
2882 return objsize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2883 } |
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 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
|
2886 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2887 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
|
2888 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2889 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2890 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2891 static int WINAPI expEnumWindows(int (*callback_func)(), void *callback_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2892 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2893 int i, i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2894 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
|
2895 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
|
2896 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
|
2897 return i && i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2898 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2899 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2900 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
|
2901 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2902 int tid = pthread_self(); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2903 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
|
2904 win, pid_data, tid); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2905 if (pid_data) |
12374 | 2906 *(int*)pid_data = tid; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2907 return tid; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2908 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2909 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2910 //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
|
2911 // 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
|
2912 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2913 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
|
2914 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
|
2915 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
|
2916 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2917 printf("CreateWindowEx() called\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2918 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
|
2919 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
|
2920 parent, menu, inst, param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2921 printf("CreateWindowEx() called okey\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2922 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2923 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2924 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2925 static int WINAPI expwaveOutGetNumDevs(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2926 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2927 dbgprintf("waveOutGetNumDevs() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2928 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2929 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2930 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2931 |
3465 | 2932 /* |
2933 * Returns the number of milliseconds, modulo 2^32, since the start | |
2934 * of the wineserver. | |
2935 */ | |
2936 static int WINAPI expGetTickCount(void) | |
1 | 2937 { |
3465 | 2938 static int tcstart = 0; |
2939 struct timeval t; | |
2940 int tc; | |
2941 gettimeofday( &t, NULL ); | |
2942 tc = ((t.tv_sec * 1000) + (t.tv_usec / 1000)) - tcstart; | |
2943 if (tcstart == 0) | |
2944 { | |
2945 tcstart = 0; | |
2946 tc = 0; | |
2947 } | |
2948 dbgprintf("GetTickCount() => %d\n", tc); | |
2949 return tc; | |
1 | 2950 } |
2951 | |
3465 | 2952 static int WINAPI expCreateFontA(void) |
2953 { | |
2954 dbgprintf("CreateFontA() => 0x0\n"); | |
2955 return 1; | |
2956 } | |
2957 | |
2958 /* tried to get pvmjpg work in a different way - no success */ | |
2959 static int WINAPI expDrawTextA(int hDC, char* lpString, int nCount, | |
2960 LPRECT lpRect, unsigned int uFormat) | |
2961 { | |
2962 dbgprintf("expDrawTextA(%p,...) => 8\n", hDC); | |
2963 return 8; | |
2964 } | |
2965 | |
2966 static int WINAPI expGetPrivateProfileIntA(const char* appname, | |
2967 const char* keyname, | |
2968 int default_value, | |
2969 const char* filename) | |
1 | 2970 { |
2971 int size=255; | |
2972 char buffer[256]; | |
2973 char* fullname; | |
2974 int result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2975 |
1 | 2976 buffer[255]=0; |
128 | 2977 if(!(appname && keyname && filename) ) |
2978 { | |
3465 | 2979 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, default_value ); |
128 | 2980 return default_value; |
2981 } | |
18878 | 2982 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 2983 strcpy(fullname, "Software\\IniFileMapping\\"); |
2984 strcat(fullname, appname); | |
2985 strcat(fullname, "\\"); | |
2986 strcat(fullname, keyname); | |
2987 strcat(fullname, "\\"); | |
2988 strcat(fullname, filename); | |
2989 result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)buffer, &size); | |
2990 if((size>=0)&&(size<256)) | |
2991 buffer[size]=0; | |
3465 | 2992 // 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
|
2993 free(fullname); |
1 | 2994 if(result) |
128 | 2995 result=default_value; |
1 | 2996 else |
128 | 2997 result=atoi(buffer); |
2998 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, result); | |
2999 return result; | |
1 | 3000 } |
3465 | 3001 static int WINAPI expGetProfileIntA(const char* appname, |
3002 const char* keyname, | |
3003 int default_value) | |
128 | 3004 { |
3005 dbgprintf("GetProfileIntA -> "); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3006 return expGetPrivateProfileIntA(appname, keyname, default_value, "default"); |
128 | 3007 } |
3008 | |
3465 | 3009 static int WINAPI expGetPrivateProfileStringA(const char* appname, |
3010 const char* keyname, | |
3011 const char* def_val, | |
3012 char* dest, unsigned int len, | |
3013 const char* filename) | |
1 | 3014 { |
3015 int result; | |
3016 int size; | |
3017 char* fullname; | |
128 | 3018 dbgprintf("GetPrivateProfileStringA('%s', '%s', def_val '%s', 0x%x, 0x%x, '%s')", appname, keyname, def_val, dest, len, filename ); |
1 | 3019 if(!(appname && keyname && filename) ) return 0; |
18878 | 3020 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 3021 strcpy(fullname, "Software\\IniFileMapping\\"); |
3022 strcat(fullname, appname); | |
3023 strcat(fullname, "\\"); | |
3024 strcat(fullname, keyname); | |
3025 strcat(fullname, "\\"); | |
3026 strcat(fullname, filename); | |
3027 size=len; | |
3028 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
|
3029 free(fullname); |
128 | 3030 if(result) |
3031 { | |
3032 strncpy(dest, def_val, size); | |
3033 if (strlen(def_val)< size) size = strlen(def_val); | |
3034 } | |
3035 dbgprintf(" => %d ( '%s' )\n", size, dest); | |
1 | 3036 return size; |
3037 } | |
3465 | 3038 static int WINAPI expWritePrivateProfileStringA(const char* appname, |
3039 const char* keyname, | |
3040 const char* string, | |
3041 const char* filename) | |
1 | 3042 { |
3043 char* fullname; | |
128 | 3044 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
|
3045 if(!(appname && keyname && filename) ) |
128 | 3046 { |
3047 dbgprintf(" => -1\n"); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3048 return -1; |
128 | 3049 } |
18878 | 3050 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 3051 strcpy(fullname, "Software\\IniFileMapping\\"); |
3052 strcat(fullname, appname); | |
3053 strcat(fullname, "\\"); | |
3054 strcat(fullname, keyname); | |
3055 strcat(fullname, "\\"); | |
3056 strcat(fullname, filename); | |
3057 RegSetValueExA(HKEY_LOCAL_MACHINE, fullname, 0, REG_SZ, (int*)string, strlen(string)); | |
3465 | 3058 // printf("RegSetValueExA(%s,%d)\n", string, strlen(string)); |
3059 // 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
|
3060 free(fullname); |
128 | 3061 dbgprintf(" => 0\n"); |
1 | 3062 return 0; |
3063 } | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3064 |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3065 unsigned int GetPrivateProfileIntA_(const char* appname, const char* keyname, INT default_value, const char* filename) |
1 | 3066 { |
3067 return expGetPrivateProfileIntA(appname, keyname, default_value, filename); | |
3068 } | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3069 int GetPrivateProfileStringA_(const char* appname, const char* keyname, |
3465 | 3070 const char* def_val, char* dest, unsigned int len, const char* filename) |
1 | 3071 { |
3072 return expGetPrivateProfileStringA(appname, keyname, def_val, dest, len, filename); | |
3073 } | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3074 int WritePrivateProfileStringA_(const char* appname, const char* keyname, |
3465 | 3075 const char* string, const char* filename) |
1 | 3076 { |
3077 return expWritePrivateProfileStringA(appname, keyname, string, filename); | |
3078 } | |
3079 | |
3080 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3081 |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3082 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
|
3083 { |
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3084 dbgprintf("DefDriverProc(0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0\n", private, id, msg, arg1, arg2); |
1 | 3085 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3086 } |
1 | 3087 |
3465 | 3088 static int WINAPI expSizeofResource(int v1, int v2) |
1 | 3089 { |
128 | 3090 int result=SizeofResource(v1, v2); |
3091 dbgprintf("SizeofResource(0x%x, 0x%x) => %d\n", v1, v2, result); | |
3092 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3093 } |
1 | 3094 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
3095 static int WINAPI expGetLastError(void) |
1 | 3096 { |
128 | 3097 int result=GetLastError(); |
3098 dbgprintf("GetLastError() => 0x%x\n", result); | |
3099 return result; | |
1 | 3100 } |
3101 | |
3465 | 3102 static void WINAPI expSetLastError(int error) |
1 | 3103 { |
128 | 3104 dbgprintf("SetLastError(0x%x)\n", error); |
1 | 3105 SetLastError(error); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3106 } |
1 | 3107 |
3465 | 3108 static int WINAPI expStringFromGUID2(GUID* guid, char* str, int cbMax) |
128 | 3109 { |
2069 | 3110 int result=snprintf(str, cbMax, "%.8x-%.4x-%.4x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", |
3111 guid->f1, guid->f2, guid->f3, | |
3112 (unsigned char)guid->f4[0], (unsigned char)guid->f4[1], | |
3113 (unsigned char)guid->f4[2], (unsigned char)guid->f4[3], | |
3114 (unsigned char)guid->f4[4], (unsigned char)guid->f4[5], | |
3115 (unsigned char)guid->f4[6], (unsigned char)guid->f4[7]); | |
128 | 3116 dbgprintf("StringFromGUID2(0x%x, 0x%x='%s', %d) => %d\n", guid, str, str, cbMax, result); |
3117 return result; | |
3118 } | |
3119 | |
1 | 3120 |
3465 | 3121 static int WINAPI expGetFileVersionInfoSizeA(const char* name, int* lpHandle) |
1 | 3122 { |
128 | 3123 dbgprintf("GetFileVersionInfoSizeA(0x%x='%s', 0x%X) => 0\n", name, name, lpHandle); |
1 | 3124 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3125 } |
1 | 3126 |
3465 | 3127 static int WINAPI expIsBadStringPtrW(const short* string, int nchars) |
1 | 3128 { |
128 | 3129 int result; |
3130 if(string==0)result=1; else result=0; | |
3131 dbgprintf("IsBadStringPtrW(0x%x, %d) => %d", string, nchars, result); | |
3132 if(string)wch_print(string); | |
3133 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3134 } |
3465 | 3135 static int WINAPI expIsBadStringPtrA(const char* string, int nchars) |
3128 | 3136 { |
3137 return expIsBadStringPtrW((const short*)string, nchars); | |
3138 } | |
3465 | 3139 static long WINAPI expInterlockedExchangeAdd( long* dest, long incr ) |
1 | 3140 { |
3141 long ret; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
3142 __asm__ volatile |
3465 | 3143 ( |
3144 "lock; xaddl %0,(%1)" | |
3145 : "=r" (ret) | |
3146 : "r" (dest), "0" (incr) | |
3147 : "memory" | |
3148 ); | |
1 | 3149 return ret; |
3150 } | |
3151 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3152 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
|
3153 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3154 unsigned long retval = *dest; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3155 if(*dest == comperand) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3156 *dest = exchange; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3157 return retval; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3158 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3159 |
3465 | 3160 static long WINAPI expInterlockedIncrement( long* dest ) |
1 | 3161 { |
3465 | 3162 long result=expInterlockedExchangeAdd( dest, 1 ) + 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3163 dbgprintf("InterlockedIncrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 3164 return result; |
1 | 3165 } |
3465 | 3166 static long WINAPI expInterlockedDecrement( long* dest ) |
1 | 3167 { |
3465 | 3168 long result=expInterlockedExchangeAdd( dest, -1 ) - 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3169 dbgprintf("InterlockedDecrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 3170 return result; |
1 | 3171 } |
3172 | |
3465 | 3173 static void WINAPI expOutputDebugStringA( const char* string ) |
1 | 3174 { |
128 | 3175 dbgprintf("OutputDebugStringA(0x%x='%s')\n", string); |
1 | 3176 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
|
3177 } |
1 | 3178 |
3465 | 3179 static int WINAPI expGetDC(int hwnd) |
1 | 3180 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3181 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
|
3182 return 1; |
1 | 3183 } |
3184 | |
3465 | 3185 static int WINAPI expReleaseDC(int hwnd, int hdc) |
1 | 3186 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3187 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
|
3188 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3189 } |
3465 | 3190 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
3191 static int WINAPI expGetDesktopWindow(void) |
128 | 3192 { |
3465 | 3193 dbgprintf("GetDesktopWindow() => 0\n"); |
3194 return 0; | |
128 | 3195 } |
3465 | 3196 |
3197 static int cursor[100]; | |
3198 | |
3199 static int WINAPI expLoadCursorA(int handle,LPCSTR name) | |
3200 { | |
3201 dbgprintf("LoadCursorA(%d, 0x%x='%s') => 0x%x\n", handle, name, (int)&cursor[0]); | |
3202 return (int)&cursor[0]; | |
3203 } | |
3204 static int WINAPI expSetCursor(void *cursor) | |
128 | 3205 { |
3206 dbgprintf("SetCursor(0x%x) => 0x%x\n", cursor, cursor); | |
3207 return (int)cursor; | |
3208 } | |
3465 | 3209 static int WINAPI expGetCursorPos(void *cursor) |
2069 | 3210 { |
3211 dbgprintf("GetCursorPos(0x%x) => 0x%x\n", cursor, cursor); | |
3212 return 1; | |
3213 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3214 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3215 static int show_cursor = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3216 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
|
3217 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3218 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
|
3219 if (show) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3220 show_cursor++; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3221 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3222 show_cursor--; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3223 return show_cursor; |
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 #endif |
3465 | 3226 static int WINAPI expRegisterWindowMessageA(char *message) |
2069 | 3227 { |
3228 dbgprintf("RegisterWindowMessageA(%s)\n", message); | |
3229 return 1; | |
3230 } | |
3465 | 3231 static int WINAPI expGetProcessVersion(int pid) |
2069 | 3232 { |
3233 dbgprintf("GetProcessVersion(%d)\n", pid); | |
3234 return 1; | |
3235 } | |
3465 | 3236 static int WINAPI expGetCurrentThread(void) |
2069 | 3237 { |
3457 | 3238 #warning FIXME! |
3239 dbgprintf("GetCurrentThread() => %x\n", 0xcfcf9898); | |
2779 | 3240 return 0xcfcf9898; |
2069 | 3241 } |
3465 | 3242 static int WINAPI expGetOEMCP(void) |
2069 | 3243 { |
3244 dbgprintf("GetOEMCP()\n"); | |
3245 return 1; | |
3246 } | |
3465 | 3247 static int WINAPI expGetCPInfo(int cp,void *info) |
2069 | 3248 { |
3249 dbgprintf("GetCPInfo()\n"); | |
3250 return 0; | |
3251 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3252 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3253 #define SM_CXSCREEN 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3254 #define SM_CYSCREEN 1 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3255 #define SM_XVIRTUALSCREEN 76 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3256 #define SM_YVIRTUALSCREEN 77 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3257 #define SM_CXVIRTUALSCREEN 78 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3258 #define SM_CYVIRTUALSCREEN 79 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3259 #define SM_CMONITORS 80 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3260 #endif |
3465 | 3261 static int WINAPI expGetSystemMetrics(int index) |
2069 | 3262 { |
3263 dbgprintf("GetSystemMetrics(%d)\n", index); | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3264 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3265 switch(index) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3266 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3267 case SM_XVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3268 case SM_YVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3269 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3270 case SM_CXSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3271 case SM_CXVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3272 return PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3273 case SM_CYSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3274 case SM_CYVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3275 return PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3276 case SM_CMONITORS: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3277 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3278 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3279 #endif |
2069 | 3280 return 1; |
3281 } | |
3465 | 3282 static int WINAPI expGetSysColor(int index) |
2069 | 3283 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3284 dbgprintf("GetSysColor(%d) => 1\n", index); |
2069 | 3285 return 1; |
3286 } | |
3465 | 3287 static int WINAPI expGetSysColorBrush(int index) |
2069 | 3288 { |
3289 dbgprintf("GetSysColorBrush(%d)\n", index); | |
3290 return 1; | |
3291 } | |
3292 | |
3293 | |
3294 | |
3465 | 3295 static int WINAPI expGetSystemPaletteEntries(int hdc, int iStartIndex, int nEntries, void* lppe) |
128 | 3296 { |
3297 dbgprintf("GetSystemPaletteEntries(0x%x, 0x%x, 0x%x, 0x%x) => 0\n", | |
3465 | 3298 hdc, iStartIndex, nEntries, lppe); |
1 | 3299 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3300 } |
1 | 3301 |
3302 /* | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
3303 typedef struct TIME_ZONE_INFORMATION { |
3465 | 3304 long Bias; |
3305 char StandardName[32]; | |
3306 SYSTEMTIME StandardDate; | |
3307 long StandardBias; | |
3308 char DaylightName[32]; | |
3309 SYSTEMTIME DaylightDate; | |
3310 long DaylightBias; | |
3311 } TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; | |
3312 */ | |
3313 | |
3314 static int WINAPI expGetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation) | |
1 | 3315 { |
128 | 3316 const short name[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'S', 't', 'a', |
3317 'n', 'd', 'a', 'r', 'd', ' ', 'T', 'i', 'm', 'e', 0}; | |
3318 const short pname[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'D', 'a', 'y', | |
3319 'l', 'i', 'g', 'h', 't', ' ', 'T', 'i', 'm', 'e', 0}; | |
3320 dbgprintf("GetTimeZoneInformation(0x%x) => TIME_ZONE_ID_STANDARD\n"); | |
1 | 3321 memset(lpTimeZoneInformation, 0, sizeof(TIME_ZONE_INFORMATION)); |
128 | 3322 lpTimeZoneInformation->Bias=360;//GMT-6 |
3323 memcpy(lpTimeZoneInformation->StandardName, name, sizeof(name)); | |
3324 lpTimeZoneInformation->StandardDate.wMonth=10; | |
3325 lpTimeZoneInformation->StandardDate.wDay=5; | |
3326 lpTimeZoneInformation->StandardDate.wHour=2; | |
3327 lpTimeZoneInformation->StandardBias=0; | |
3328 memcpy(lpTimeZoneInformation->DaylightName, pname, sizeof(pname)); | |
3329 lpTimeZoneInformation->DaylightDate.wMonth=4; | |
3330 lpTimeZoneInformation->DaylightDate.wDay=1; | |
3331 lpTimeZoneInformation->DaylightDate.wHour=2; | |
3332 lpTimeZoneInformation->DaylightBias=-60; | |
3333 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
|
3334 } |
1 | 3335 |
3465 | 3336 static void WINAPI expGetLocalTime(SYSTEMTIME* systime) |
1 | 3337 { |
3338 time_t local_time; | |
3339 struct tm *local_tm; | |
3340 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3341 |
128 | 3342 dbgprintf("GetLocalTime(0x%x)\n"); |
1 | 3343 gettimeofday(&tv, NULL); |
3344 local_time=tv.tv_sec; | |
3345 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
|
3346 |
1 | 3347 systime->wYear = local_tm->tm_year + 1900; |
3348 systime->wMonth = local_tm->tm_mon + 1; | |
3349 systime->wDayOfWeek = local_tm->tm_wday; | |
3350 systime->wDay = local_tm->tm_mday; | |
3351 systime->wHour = local_tm->tm_hour; | |
3352 systime->wMinute = local_tm->tm_min; | |
3353 systime->wSecond = local_tm->tm_sec; | |
3354 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3355 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3356 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3357 " Milliseconds: %d\n", | |
3358 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3359 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
1 | 3360 } |
3361 | |
3465 | 3362 static int WINAPI expGetSystemTime(SYSTEMTIME* systime) |
1 | 3363 { |
3364 time_t local_time; | |
3365 struct tm *local_tm; | |
3366 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3367 |
128 | 3368 dbgprintf("GetSystemTime(0x%x)\n", systime); |
1 | 3369 gettimeofday(&tv, NULL); |
3370 local_time=tv.tv_sec; | |
3371 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
|
3372 |
1 | 3373 systime->wYear = local_tm->tm_year + 1900; |
3374 systime->wMonth = local_tm->tm_mon + 1; | |
3375 systime->wDayOfWeek = local_tm->tm_wday; | |
3376 systime->wDay = local_tm->tm_mday; | |
3377 systime->wHour = local_tm->tm_hour; | |
3378 systime->wMinute = local_tm->tm_min; | |
3379 systime->wSecond = local_tm->tm_sec; | |
3380 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3381 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3382 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3383 " Milliseconds: %d\n", | |
3384 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3385 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
2069 | 3386 return 0; |
1 | 3387 } |
3388 | |
7386 | 3389 #define SECS_1601_TO_1970 ((369 * 365 + 89) * 86400ULL) |
3390 static void WINAPI expGetSystemTimeAsFileTime(FILETIME* systime) | |
3391 { | |
3392 struct timeval tv; | |
3393 unsigned long long secs; | |
3394 | |
3395 dbgprintf("GetSystemTime(0x%x)\n", systime); | |
3396 gettimeofday(&tv, NULL); | |
3397 secs = (tv.tv_sec + SECS_1601_TO_1970) * 10000000; | |
3398 secs += tv.tv_usec * 10; | |
3399 systime->dwLowDateTime = secs & 0xffffffff; | |
3400 systime->dwHighDateTime = (secs >> 32); | |
3401 } | |
3402 | |
3465 | 3403 static int WINAPI expGetEnvironmentVariableA(const char* name, char* field, int size) |
1 | 3404 { |
24385 | 3405 //char *p; |
3465 | 3406 // printf("%s %x %x\n", name, field, size); |
1 | 3407 if(field)field[0]=0; |
3465 | 3408 /* |
3409 p = getenv(name); | |
3410 if (p) strncpy(field,p,size); | |
3411 */ | |
128 | 3412 if (strcmp(name,"__MSVCRT_HEAP_SELECT")==0) |
3465 | 3413 strcpy(field,"__GLOBAL_HEAP_SELECTED,1"); |
128 | 3414 dbgprintf("GetEnvironmentVariableA(0x%x='%s', 0x%x, %d) => %d\n", name, name, field, size, strlen(field)); |
3415 return strlen(field); | |
3416 } | |
3417 | |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3418 static int WINAPI expSetEnvironmentVariableA(const char *name, const char *value) |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3419 { |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3420 dbgprintf("SetEnvironmentVariableA(%s, %s)\n", name, value); |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3421 return 0; |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3422 } |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3423 |
3465 | 3424 static void* WINAPI expCoTaskMemAlloc(ULONG cb) |
128 | 3425 { |
3426 return my_mreq(cb, 0); | |
3427 } | |
3465 | 3428 static void WINAPI expCoTaskMemFree(void* cb) |
128 | 3429 { |
3430 my_release(cb); | |
3431 } | |
3432 | |
3465 | 3433 |
3434 | |
3435 | |
3547 | 3436 void* CoTaskMemAlloc(unsigned long cb) |
3465 | 3437 { |
3438 return expCoTaskMemAlloc(cb); | |
3439 } | |
3440 void CoTaskMemFree(void* cb) | |
3441 { | |
3442 expCoTaskMemFree(cb); | |
3443 } | |
128 | 3444 |
3445 struct COM_OBJECT_INFO | |
3446 { | |
3447 GUID clsid; | |
7386 | 3448 long (*GetClassObject) (GUID* clsid, const GUID* iid, void** ppv); |
128 | 3449 }; |
3450 | |
3451 static struct COM_OBJECT_INFO* com_object_table=0; | |
3452 static int com_object_size=0; | |
7386 | 3453 int RegisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
128 | 3454 { |
2069 | 3455 if(!clsid || !gcs) |
3456 return -1; | |
128 | 3457 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
|
3458 com_object_table[com_object_size-1].clsid=*clsid; |
128 | 3459 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
|
3460 return 0; |
128 | 3461 } |
3462 | |
7386 | 3463 int UnregisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
2069 | 3464 { |
3465 int found = 0; | |
3466 int i = 0; | |
3467 if(!clsid || !gcs) | |
3468 return -1; | |
3469 | |
3470 if (com_object_table == 0) | |
3471 printf("Warning: UnregisterComClass() called without any registered class\n"); | |
3472 while (i < com_object_size) | |
3473 { | |
3474 if (found && i > 0) | |
3475 { | |
3476 memcpy(&com_object_table[i - 1].clsid, | |
3477 &com_object_table[i].clsid, sizeof(GUID)); | |
3478 com_object_table[i - 1].GetClassObject = | |
3479 com_object_table[i].GetClassObject; | |
3480 } | |
3481 else if (memcmp(&com_object_table[i].clsid, clsid, sizeof(GUID)) == 0 | |
3482 && com_object_table[i].GetClassObject == gcs) | |
3483 { | |
3465 | 3484 found++; |
2069 | 3485 } |
3486 i++; | |
3487 } | |
3488 if (found) | |
3489 { | |
3490 if (--com_object_size == 0) | |
3491 { | |
3492 free(com_object_table); | |
3465 | 3493 com_object_table = 0; |
2069 | 3494 } |
3495 } | |
3496 return 0; | |
3497 } | |
3498 | |
3499 | |
7386 | 3500 const GUID IID_IUnknown = |
3465 | 3501 { |
3502 0x00000000, 0x0000, 0x0000, | |
3503 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3504 }; | |
7386 | 3505 const GUID IID_IClassFactory = |
3465 | 3506 { |
3507 0x00000001, 0x0000, 0x0000, | |
3508 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3509 }; | |
3510 | |
3511 static long WINAPI expCoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, | |
7386 | 3512 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3513 { |
3514 int i; | |
3515 struct COM_OBJECT_INFO* ci=0; | |
3516 for(i=0; i<com_object_size; i++) | |
3517 if(!memcmp(rclsid, &com_object_table[i].clsid, sizeof(GUID))) | |
3518 ci=&com_object_table[i]; | |
3465 | 3519 if(!ci)return REGDB_E_CLASSNOTREG; |
128 | 3520 // in 'real' world we should mess with IClassFactory here |
3521 i=ci->GetClassObject(rclsid, riid, ppv); | |
3522 return i; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3523 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3524 |
128 | 3525 long CoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, |
7386 | 3526 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3527 { |
3528 return expCoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv); | |
3529 } | |
3530 | |
3465 | 3531 static int WINAPI expIsRectEmpty(CONST RECT *lprc) |
128 | 3532 { |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3533 int r = 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3534 int w,h; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3535 //trapbug(); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3536 if (lprc) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3537 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3538 w = lprc->right - lprc->left; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3539 h = lprc->bottom - lprc->top; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3540 if (w <= 0 || h <= 0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3541 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3542 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3543 else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3544 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3545 |
3465 | 3546 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
|
3547 //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
|
3548 // return 0; // wmv9? |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3549 return r; // TM20 |
128 | 3550 } |
3551 | |
3465 | 3552 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
|
3553 static int _winver = 0x510; // windows version |
3465 | 3554 |
3555 | |
3556 | |
3557 | |
3558 static unsigned int WINAPI expGetTempPathA(unsigned int len, char* path) | |
128 | 3559 { |
3560 dbgprintf("GetTempPathA(%d, 0x%x)", len, path); | |
3561 if(len<5) | |
3562 { | |
3563 dbgprintf(" => 0\n"); | |
3564 return 0; | |
3565 } | |
3566 strcpy(path, "/tmp"); | |
3567 dbgprintf(" => 5 ( '/tmp' )\n"); | |
3568 return 5; | |
3569 } | |
3570 /* | |
3465 | 3571 FYI: |
3572 typedef struct | |
3573 { | |
3574 DWORD dwFileAttributes; | |
3575 FILETIME ftCreationTime; | |
3576 FILETIME ftLastAccessTime; | |
3577 FILETIME ftLastWriteTime; | |
3578 DWORD nFileSizeHigh; | |
3579 DWORD nFileSizeLow; | |
3580 DWORD dwReserved0; | |
3581 DWORD dwReserved1; | |
3582 CHAR cFileName[260]; | |
3583 CHAR cAlternateFileName[14]; | |
3584 } WIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; | |
3585 */ | |
3586 | |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3587 static DIR* qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3588 |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3589 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
|
3590 { |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3591 #ifdef CONFIG_QTX_CODECS |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3592 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
|
3593 if(h==FILE_HANDLE_quicktimeqtx){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3594 struct dirent* d; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3595 if(!qtx_dir) return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3596 while((d=readdir(qtx_dir))){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3597 char* x=strrchr(d->d_name,'.'); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3598 if(!x) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3599 if(strcmp(x,".qtx")) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3600 strcpy(lpfd->cFileName,d->d_name); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3601 // 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
|
3602 strcpy(lpfd->cAlternateFileName,"foobar.qtx"); |
28305 | 3603 dbgprintf("### FindNext: %s\n",lpfd->cFileName); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3604 return 1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3605 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3606 closedir(qtx_dir); qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3607 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3608 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3609 #endif |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3610 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3611 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3612 |
3465 | 3613 static HANDLE WINAPI expFindFirstFileA(LPCSTR s, LPWIN32_FIND_DATAA lpfd) |
128 | 3614 { |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3615 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
|
3616 // printf("\n### FindFirstFileA('%s')...\n",s); |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3617 #ifdef CONFIG_QTX_CODECS |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3618 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
|
3619 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTX\n", s, s, lpfd); |
28305 | 3620 dbgprintf("\n### Searching for QuickTime plugins (*.qtx) at %s...\n",def_path); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3621 qtx_dir=opendir(def_path); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3622 if(!qtx_dir) return (HANDLE)-1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3623 memset(lpfd,0,sizeof(*lpfd)); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3624 if(expFindNextFileA(FILE_HANDLE_quicktimeqtx,lpfd)) |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3625 return FILE_HANDLE_quicktimeqtx; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3626 printf("loader: Couldn't find the QuickTime plugins (.qtx files) at %s\n",def_path); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3627 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3628 } |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3629 #if 0 |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3630 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
|
3631 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
|
3632 // 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
|
3633 // return (HANDLE)-1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3634 strcpy(lpfd->cFileName, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3635 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
|
3636 return FILE_HANDLE_quicktimeqts; |
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 #endif |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3639 #endif |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3640 if(strstr(s, "*.vwp")){ |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3641 // hack for VoxWare codec plugins: |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3642 strcpy(lpfd->cFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3643 strcpy(lpfd->cAlternateFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3644 return (HANDLE)0; |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3645 } |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3646 // return 'file not found' |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3647 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3648 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3649 |
3465 | 3650 static WIN_BOOL WINAPI expFindClose(HANDLE h) |
128 | 3651 { |
3652 dbgprintf("FindClose(0x%x) => 0\n", h); | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3653 #ifdef CONFIG_QTX_CODECS |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3654 // if(h==FILE_HANDLE_quicktimeqtx && qtx_dir){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3655 // closedir(qtx_dir); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3656 // qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3657 // } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3658 #endif |
128 | 3659 return 0; |
3660 } | |
3465 | 3661 static UINT WINAPI expSetErrorMode(UINT i) |
128 | 3662 { |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3663 dbgprintf("SetErrorMode(%d) => 0\n", i); |
128 | 3664 return 0; |
3665 } | |
3465 | 3666 static UINT WINAPI expGetWindowsDirectoryA(LPSTR s,UINT c) |
128 | 3667 { |
3668 char windir[]="c:\\windows"; | |
3669 int result; | |
3670 strncpy(s, windir, c); | |
3671 result=1+((c<strlen(windir))?c:strlen(windir)); | |
3672 dbgprintf("GetWindowsDirectoryA(0x%x, %d) => %d\n", s, c, result); | |
3673 return result; | |
3674 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3675 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3676 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
|
3677 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3678 char curdir[]="c:\\"; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3679 int result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3680 strncpy(s, curdir, c); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3681 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
|
3682 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
|
3683 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3684 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3685 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3686 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
|
3687 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3688 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
|
3689 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3690 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3691 chdir(strcat(strrchr(pathname, '\\')+1, '/')); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3692 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3693 chdir(pathname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3694 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3695 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3696 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3697 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3698 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
|
3699 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3700 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
|
3701 pathname, pathname, sa); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3702 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3703 p = strrchr(pathname, '\\')+1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3704 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
|
3705 if (!strlen(p)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3706 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3707 buf[0] = '.'; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3708 buf[1] = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3709 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
3710 #if 0 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3711 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3712 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
|
3713 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3714 mkdir(pathname, 666); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3715 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3716 mkdir(&buf); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3717 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3718 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3719 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3720 #endif |
3465 | 3721 static WIN_BOOL WINAPI expDeleteFileA(LPCSTR s) |
128 | 3722 { |
3723 dbgprintf("DeleteFileA(0x%x='%s') => 0\n", s, s); | |
3724 return 0; | |
3725 } | |
3465 | 3726 static WIN_BOOL WINAPI expFileTimeToLocalFileTime(const FILETIME* cpf, LPFILETIME pf) |
128 | 3727 { |
3728 dbgprintf("FileTimeToLocalFileTime(0x%x, 0x%x) => 0\n", cpf, pf); | |
3729 return 0; | |
3730 } | |
3731 | |
3465 | 3732 static UINT WINAPI expGetTempFileNameA(LPCSTR cs1,LPCSTR cs2,UINT i,LPSTR ps) |
128 | 3733 { |
3734 char mask[16]="/tmp/AP_XXXXXX"; | |
3735 int result; | |
3736 dbgprintf("GetTempFileNameA(0x%x='%s', 0x%x='%s', %d, 0x%x)", cs1, cs1, cs2, cs2, i, ps); | |
3737 if(i && i<10) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3738 { |
128 | 3739 dbgprintf(" => -1\n"); |
3740 return -1; | |
3741 } | |
3742 result=mkstemp(mask); | |
3743 sprintf(ps, "AP%d", result); | |
3744 dbgprintf(" => %d\n", strlen(ps)); | |
3745 return strlen(ps); | |
3746 } | |
3747 // | |
3748 // This func might need proper implementation if we want AngelPotion codec. | |
3749 // They try to open APmpeg4v1.apl with it. | |
3750 // DLL will close opened file with CloseHandle(). | |
3751 // | |
3465 | 3752 static HANDLE WINAPI expCreateFileA(LPCSTR cs1,DWORD i1,DWORD i2, |
3753 LPSECURITY_ATTRIBUTES p1, DWORD i3,DWORD i4,HANDLE i5) | |
128 | 3754 { |
3755 dbgprintf("CreateFileA(0x%x='%s', %d, %d, 0x%x, %d, %d, 0x%x)\n", cs1, cs1, i1, | |
3465 | 3756 i2, p1, i3, i4, i5); |
128 | 3757 if((!cs1) || (strlen(cs1)<2))return -1; |
3128 | 3758 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3759 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3760 if(strstr(cs1, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3761 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3762 int result; |
18878 | 3763 char* tmp=malloc(strlen(def_path)+50); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3764 strcpy(tmp, def_path); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3765 strcat(tmp, "/"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3766 strcat(tmp, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3767 result=open(tmp, O_RDONLY); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3768 free(tmp); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3769 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3770 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3771 if(strstr(cs1, ".qtx")) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3772 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3773 int result; |
18878 | 3774 char* tmp=malloc(strlen(def_path)+250); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3775 char* x=strrchr(cs1,'\\'); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3776 sprintf(tmp,"%s/%s",def_path,x?(x+1):cs1); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3777 // 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
|
3778 result=open(tmp, O_RDONLY); |
8285 | 3779 free(tmp); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3780 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3781 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3782 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3783 |
3128 | 3784 if(strncmp(cs1, "AP", 2) == 0) |
128 | 3785 { |
3786 int result; | |
18878 | 3787 char* tmp=malloc(strlen(def_path)+50); |
128 | 3788 strcpy(tmp, def_path); |
3789 strcat(tmp, "/"); | |
3790 strcat(tmp, "APmpg4v1.apl"); | |
3791 result=open(tmp, O_RDONLY); | |
3792 free(tmp); | |
3793 return result; | |
3128 | 3794 } |
29027 | 3795 if (strstr(cs1, "vp3") || strstr(cs1, ".fpf")) |
3128 | 3796 { |
3797 int r; | |
3798 int flg = 0; | |
18878 | 3799 char* tmp=malloc(20 + strlen(cs1)); |
3128 | 3800 strcpy(tmp, "/tmp/"); |
3801 strcat(tmp, cs1); | |
3802 r = 4; | |
3803 while (tmp[r]) | |
3804 { | |
3805 if (tmp[r] == ':' || tmp[r] == '\\') | |
3806 tmp[r] = '_'; | |
3807 r++; | |
3808 } | |
3809 if (GENERIC_READ & i1) | |
3810 flg |= O_RDONLY; | |
3811 else if (GENERIC_WRITE & i1) | |
3812 { | |
29027 | 3813 flg |= O_WRONLY | O_CREAT; |
3128 | 3814 printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", tmp, r, flg); |
3815 } | |
29027 | 3816 r=open(tmp, flg, S_IRWXU); |
3128 | 3817 free(tmp); |
3818 return r; | |
3819 } | |
3820 | |
12735
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3821 // Needed by wnvplay1.dll |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3822 if (strstr(cs1, "WINNOV.bmp")) |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3823 { |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3824 int r; |
24802 | 3825 r=open("/dev/null", O_RDONLY); |
12735
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3826 return r; |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3827 } |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3828 |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3829 #if 0 |
7386 | 3830 /* 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
|
3831 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3832 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
|
3833 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
|
3834 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
|
3835 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
|
3836 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
|
3837 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3838 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
|
3839 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
|
3840 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3841 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
|
3842 return r; |
7386 | 3843 } |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3844 #endif |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3845 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3846 return atoi(cs1+2); |
128 | 3847 } |
5234 | 3848 static UINT WINAPI expGetSystemDirectoryA( |
3849 char* lpBuffer, // address of buffer for system directory | |
3850 UINT uSize // size of directory buffer | |
3851 ){ | |
3852 dbgprintf("GetSystemDirectoryA(%p,%d)\n", lpBuffer,uSize); | |
3853 if(!lpBuffer) strcpy(lpBuffer,"."); | |
3854 return 1; | |
3855 } | |
3856 /* | |
128 | 3857 static char sysdir[]="."; |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
3858 static LPCSTR WINAPI expGetSystemDirectoryA(void) |
128 | 3859 { |
3860 dbgprintf("GetSystemDirectoryA() => 0x%x='%s'\n", sysdir, sysdir); | |
3861 return sysdir; | |
3862 } | |
5234 | 3863 */ |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3864 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
|
3865 ( |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3866 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
|
3867 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
|
3868 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
|
3869 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
|
3870 ){ |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3871 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
|
3872 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
|
3873 lpBuffer, lpFilePart); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3874 #if 0 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3875 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3876 strcpy(lpFilePart, "Quick123.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3877 #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
|
3878 strcpy(lpFilePart, lpFileName); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3879 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3880 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3881 if (strrchr(lpFileName, '\\')) |
8451 | 3882 lpFilePart = strrchr(lpFileName, '\\'); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3883 else |
13182 | 3884 lpFilePart = (LPTSTR)lpFileName; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3885 #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
|
3886 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
|
3887 // 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
|
3888 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
|
3889 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3890 |
5234 | 3891 static DWORD WINAPI expGetShortPathNameA |
3892 ( | |
3893 LPCSTR longpath, | |
3894 LPSTR shortpath, | |
3895 DWORD shortlen | |
3896 ){ | |
3897 if(!longpath) return 0; | |
3898 dbgprintf("GetShortPathNameA('%s',%p,%d)\n",longpath,shortpath,shortlen); | |
3899 strcpy(shortpath,longpath); | |
3900 return strlen(shortpath); | |
3901 } | |
7386 | 3902 |
3465 | 3903 static WIN_BOOL WINAPI expReadFile(HANDLE h,LPVOID pv,DWORD size,LPDWORD rd,LPOVERLAPPED unused) |
128 | 3904 { |
3905 int result; | |
3906 dbgprintf("ReadFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, rd); | |
3907 result=read(h, pv, size); | |
3908 if(rd)*rd=result; | |
3909 if(!result)return 0; | |
3910 return 1; | |
3911 } | |
3912 | |
3465 | 3913 static WIN_BOOL WINAPI expWriteFile(HANDLE h,LPCVOID pv,DWORD size,LPDWORD wr,LPOVERLAPPED unused) |
128 | 3914 { |
3915 int result; | |
3916 dbgprintf("WriteFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, wr); | |
3917 if(h==1234)h=1; | |
3918 result=write(h, pv, size); | |
3919 if(wr)*wr=result; | |
3920 if(!result)return 0; | |
3921 return 1; | |
3922 } | |
3465 | 3923 static DWORD WINAPI expSetFilePointer(HANDLE h, LONG val, LPLONG ext, DWORD whence) |
128 | 3924 { |
3925 int wh; | |
26454
593921728191
Fix potential segfault in debug printf in expSetFilePointer
rtogni
parents:
26444
diff
changeset
|
3926 dbgprintf("SetFilePointer(%d, 0x%x, 0x%x = %d, %d)\n", h, val, ext, ext ? *ext : NULL, whence); |
3465 | 3927 //why would DLL want temporary file with >2Gb size? |
128 | 3928 switch(whence) |
3929 { | |
3930 case FILE_BEGIN: | |
3931 wh=SEEK_SET;break; | |
3932 case FILE_END: | |
3933 wh=SEEK_END;break; | |
3934 case FILE_CURRENT: | |
3935 wh=SEEK_CUR;break; | |
3936 default: | |
3937 return -1; | |
3938 } | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
3939 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3940 if (val == 0 && ext != 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3941 val = val&(*ext); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3942 #endif |
128 | 3943 return lseek(h, val, wh); |
3944 } | |
3945 | |
3465 | 3946 static HDRVR WINAPI expOpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName, |
3947 LPARAM lParam2) | |
128 | 3948 { |
3949 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
|
3950 return -1; |
128 | 3951 } |
3465 | 3952 static HDRVR WINAPI expOpenDriver(LPCSTR szDriverName, LPCSTR szSectionName, |
3953 LPARAM lParam2) | |
128 | 3954 { |
3955 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
|
3956 return -1; |
128 | 3957 } |
1 | 3958 |
3959 | |
3465 | 3960 static WIN_BOOL WINAPI expGetProcessAffinityMask(HANDLE hProcess, |
3961 LPDWORD lpProcessAffinityMask, | |
3962 LPDWORD lpSystemAffinityMask) | |
128 | 3963 { |
3964 dbgprintf("GetProcessAffinityMask(0x%x, 0x%x, 0x%x) => 1\n", | |
3465 | 3965 hProcess, lpProcessAffinityMask, lpSystemAffinityMask); |
128 | 3966 if(lpProcessAffinityMask)*lpProcessAffinityMask=1; |
3967 if(lpSystemAffinityMask)*lpSystemAffinityMask=1; | |
3968 return 1; | |
1 | 3969 } |
3970 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3971 // Fake implementation: does nothing, but does it right :) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3972 static WIN_BOOL WINAPI expSetProcessAffinityMask(HANDLE hProcess, |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3973 LPDWORD dwProcessAffinityMask) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3974 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3975 dbgprintf("SetProcessAffinityMask(0x%x, 0x%x) => 1\n", |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3976 hProcess, dwProcessAffinityMask); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3977 |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3978 return 1; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3979 }; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3980 |
3465 | 3981 static int WINAPI expMulDiv(int nNumber, int nNumerator, int nDenominator) |
713 | 3982 { |
3983 static const long long max_int=0x7FFFFFFFLL; | |
3984 static const long long min_int=-0x80000000LL; | |
3985 long long tmp=(long long)nNumber*(long long)nNumerator; | |
3465 | 3986 dbgprintf("expMulDiv %d * %d / %d\n", nNumber, nNumerator, nDenominator); |
713 | 3987 if(!nDenominator)return 1; |
3988 tmp/=nDenominator; | |
3989 if(tmp<min_int) return 1; | |
3990 if(tmp>max_int) return 1; | |
3991 return (int)tmp; | |
3992 } | |
3993 | |
3465 | 3994 static LONG WINAPI explstrcmpiA(const char* str1, const char* str2) |
713 | 3995 { |
3996 LONG result=strcasecmp(str1, str2); | |
3997 dbgprintf("strcmpi(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
3998 return result; | |
3999 } | |
4000 | |
3465 | 4001 static LONG WINAPI explstrlenA(const char* str1) |
713 | 4002 { |
4003 LONG result=strlen(str1); | |
3134 | 4004 dbgprintf("strlen(0x%x='%.50s') => %d\n", str1, str1, result); |
713 | 4005 return result; |
4006 } | |
4007 | |
3465 | 4008 static LONG WINAPI explstrcpyA(char* str1, const char* str2) |
713 | 4009 { |
4010 int result= (int) strcpy(str1, str2); | |
3134 | 4011 dbgprintf("strcpy(0x%.50x, 0x%.50x='%.50s') => %d\n", str1, str2, str2, result); |
713 | 4012 return result; |
4013 } | |
3465 | 4014 static LONG WINAPI explstrcpynA(char* str1, const char* str2,int len) |
2069 | 4015 { |
4016 int result; | |
4017 if (strlen(str2)>len) | |
3465 | 4018 result = (int) strncpy(str1, str2,len); |
2069 | 4019 else |
3465 | 4020 result = (int) strcpy(str1,str2); |
2069 | 4021 dbgprintf("strncpy(0x%x, 0x%x='%s' len %d strlen %d) => %x\n", str1, str2, str2,len, strlen(str2),result); |
4022 return result; | |
4023 } | |
3465 | 4024 static LONG WINAPI explstrcatA(char* str1, const char* str2) |
2069 | 4025 { |
4026 int result= (int) strcat(str1, str2); | |
4027 dbgprintf("strcat(0x%x, 0x%x='%s') => %d\n", str1, str2, str2, result); | |
4028 return result; | |
4029 } | |
4030 | |
128 | 4031 |
3465 | 4032 static LONG WINAPI expInterlockedExchange(long *dest, long l) |
497 | 4033 { |
3465 | 4034 long retval = *dest; |
4035 *dest = l; | |
4036 return retval; | |
497 | 4037 } |
4038 | |
3465 | 4039 static void WINAPI expInitCommonControls(void) |
1543 | 4040 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4041 dbgprintf("InitCommonControls called!\n"); |
2069 | 4042 return; |
1543 | 4043 } |
4044 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
4045 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4046 /* needed by QuickTime.qts */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4047 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
|
4048 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
|
4049 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
|
4050 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4051 dbgprintf("CreateUpDownControl(...)\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4052 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4053 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4054 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4055 |
3457 | 4056 /* alex: implement this call! needed for 3ivx */ |
3465 | 4057 static HRESULT WINAPI expCoCreateFreeThreadedMarshaler(void *pUnkOuter, void **ppUnkInner) |
2396 | 4058 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4059 dbgprintf("CoCreateFreeThreadedMarshaler(%p, %p) called!\n", |
3465 | 4060 pUnkOuter, ppUnkInner); |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4061 // return 0; |
3457 | 4062 return ERROR_CALL_NOT_IMPLEMENTED; |
2396 | 4063 } |
4064 | |
2779 | 4065 |
3465 | 4066 static int WINAPI expDuplicateHandle(HANDLE hSourceProcessHandle, // handle to source process |
4067 HANDLE hSourceHandle, // handle to duplicate | |
4068 HANDLE hTargetProcessHandle, // handle to target process | |
4069 HANDLE* lpTargetHandle, // duplicate handle | |
4070 DWORD dwDesiredAccess, // requested access | |
4071 int bInheritHandle, // handle inheritance option | |
4072 DWORD dwOptions // optional actions | |
4073 ) | |
2779 | 4074 { |
4075 dbgprintf("DuplicateHandle(%p, %p, %p, %p, 0x%x, %d, %d) called\n", | |
3465 | 4076 hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, |
4077 lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions); | |
2779 | 4078 *lpTargetHandle = hSourceHandle; |
4079 return 1; | |
4080 } | |
4081 | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4082 static HRESULT WINAPI expCoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4083 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4084 dbgprintf("CoInitializeEx(%p, %d) called\n", lpReserved, dwCoInit); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4085 return S_OK; |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4086 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4087 |
3128 | 4088 // required by PIM1 codec (used by win98 PCTV Studio capture sw) |
3465 | 4089 static HRESULT WINAPI expCoInitialize( |
4090 LPVOID lpReserved /* [in] pointer to win32 malloc interface | |
4091 (obsolete, should be NULL) */ | |
4092 ) | |
3033 | 4093 { |
3465 | 4094 /* |
4095 * Just delegate to the newer method. | |
4096 */ | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4097 return expCoInitializeEx(lpReserved, COINIT_APARTMENTTHREADED); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4098 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4099 |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4100 static void WINAPI expCoUninitialize(void) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4101 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4102 dbgprintf("CoUninitialize() called\n"); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4103 } |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4104 |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4105 /* allow static linking */ |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4106 HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4107 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4108 return expCoInitializeEx(lpReserved, dwCoInit); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4109 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4110 HRESULT WINAPI CoInitialize(LPVOID lpReserved) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4111 { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4112 return expCoInitialize(lpReserved); |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4113 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4114 void WINAPI CoUninitialize(void) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
4115 { |
30224
f3da21b2590d
Remove return statement from function that has no return value.
reimar
parents:
30220
diff
changeset
|
4116 expCoUninitialize(); |
3033 | 4117 } |
4118 | |
3465 | 4119 static DWORD WINAPI expSetThreadAffinityMask |
3441 | 4120 ( |
4121 HANDLE hThread, | |
4122 DWORD dwThreadAffinityMask | |
4123 ){ | |
4124 return 0; | |
4125 }; | |
3033 | 4126 |
3465 | 4127 /* |
4128 * no WINAPI functions - CDECL | |
4129 */ | |
4130 static void* expmalloc(int size) | |
4131 { | |
4132 //printf("malloc"); | |
4133 // return malloc(size); | |
4134 void* result=my_mreq(size,0); | |
4135 dbgprintf("malloc(0x%x) => 0x%x\n", size,result); | |
4136 if(result==0) | |
4137 printf("WARNING: malloc() failed\n"); | |
4138 return result; | |
4139 } | |
4140 static void expfree(void* mem) | |
4141 { | |
4142 // return free(mem); | |
4143 dbgprintf("free(%p)\n", mem); | |
4144 my_release(mem); | |
4145 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4146 /* needed by atrac3.acm */ |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4147 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
|
4148 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4149 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
|
4150 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
|
4151 if(result==0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4152 printf("WARNING: calloc() failed\n"); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4153 return result; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4154 } |
3465 | 4155 static void* expnew(int size) |
4156 { | |
4157 // printf("NEW:: Call from address %08x\n STACK DUMP:\n", *(-1+(int*)&size)); | |
4158 // printf("%08x %08x %08x %08x\n", | |
4159 // size, *(1+(int*)&size), | |
4160 // *(2+(int*)&size),*(3+(int*)&size)); | |
4161 void* result; | |
4162 assert(size >= 0); | |
4163 | |
4164 result=my_mreq(size,0); | |
4165 dbgprintf("new(%d) => %p\n", size, result); | |
4166 if (result==0) | |
4167 printf("WARNING: new() failed\n"); | |
4168 return result; | |
4169 | |
4170 } | |
4171 static int expdelete(void* memory) | |
4172 { | |
4173 dbgprintf("delete(%p)\n", memory); | |
4174 my_release(memory); | |
4175 return 0; | |
4176 } | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4177 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4178 /* |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4179 * 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
|
4180 * 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
|
4181 */ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4182 typedef struct __attribute__((__packed__)) |
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 char hay[0x40]; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4185 unsigned long cbFormat; //0x40 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4186 char* pbFormat; //0x44 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4187 } MY_MEDIA_TYPE; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4188 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
|
4189 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4190 if (!dest || !src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4191 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4192 memcpy(dest, src, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4193 if (dest->cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4194 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4195 dest->pbFormat = (char*) my_mreq(dest->cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4196 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4197 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4198 memcpy(dest->pbFormat, src->pbFormat, dest->cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4199 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4200 return S_OK; |
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 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
|
4203 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4204 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4205 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4206 memset(dest, 0, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4207 if (cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4208 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4209 dest->pbFormat = (char*) my_mreq(cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4210 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4211 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4212 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4213 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4214 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4215 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
|
4216 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4217 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4218 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4219 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4220 return expMoInitMediaType(*dest, cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4221 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4222 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
|
4223 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4224 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4225 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4226 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4227 return expMoCopyMediaType(*dest, src); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4228 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4229 static HRESULT WINAPI expMoFreeMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4230 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4231 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4232 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4233 if (dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4234 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4235 my_release(dest->pbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4236 dest->pbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4237 dest->cbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4238 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4239 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4240 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4241 static HRESULT WINAPI expMoDeleteMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4242 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4243 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4244 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4245 expMoFreeMediaType(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4246 my_release(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4247 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4248 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4249 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4250 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
|
4251 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4252 int x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4253 va_list va; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4254 va_start(va, format); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4255 x=snprintf(str,size,format,va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4256 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
|
4257 va_end(va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4258 return x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4259 } |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4260 |
7386 | 4261 #if 0 |
3465 | 4262 static int exp_initterm(int v1, int v2) |
4263 { | |
4264 dbgprintf("_initterm(0x%x, 0x%x) => 0\n", v1, v2); | |
4265 return 0; | |
4266 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4267 #else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4268 /* 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
|
4269 typedef void (*INITTERMFUNC)(); |
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24802
diff
changeset
|
4270 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
|
4271 { |
7386 | 4272 dbgprintf("_initterm(0x%x, 0x%x) %p\n", start, end, *start); |
4273 while (start < end) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4274 { |
7386 | 4275 if (*start) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4276 { |
7386 | 4277 //printf("call _initfunc: from: %p %d\n", *start); |
4278 // ok this trick with push/pop is necessary as otherwice | |
4279 // edi/esi registers are being trashed | |
4280 void* p = *start; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4281 __asm__ volatile |
7386 | 4282 ( |
4283 "pushl %%ebx \n\t" | |
4284 "pushl %%ecx \n\t" | |
4285 "pushl %%edx \n\t" | |
4286 "pushl %%edi \n\t" | |
4287 "pushl %%esi \n\t" | |
4288 "call *%%eax \n\t" | |
4289 "popl %%esi \n\t" | |
4290 "popl %%edi \n\t" | |
4291 "popl %%edx \n\t" | |
4292 "popl %%ecx \n\t" | |
4293 "popl %%ebx \n\t" | |
4294 : | |
4295 : "a"(p) | |
4296 : "memory" | |
4297 ); | |
4298 //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
|
4299 } |
7386 | 4300 start++; |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4301 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4302 return 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4303 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4304 #endif |
3465 | 4305 |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4306 /* 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
|
4307 * 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
|
4308 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
|
4309 a real implementation of this function */ |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4310 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
|
4311 { |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4312 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
|
4313 return 0; |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4314 } |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
4315 |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
29087
diff
changeset
|
4316 static void* exp__dllonexit(void) |
7386 | 4317 { |
4318 // FIXME extract from WINE | |
4319 return NULL; | |
4320 } | |
4321 | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4322 static int expwsprintfA(char* string, const char* format, ...) |
3465 | 4323 { |
4324 va_list va; | |
4325 int result; | |
4326 va_start(va, format); | |
4327 result = vsprintf(string, format, va); | |
4328 dbgprintf("wsprintfA(0x%x, '%s', ...) => %d\n", string, format, result); | |
4329 va_end(va); | |
4330 return result; | |
4331 } | |
4332 | |
4333 static int expsprintf(char* str, const char* format, ...) | |
4334 { | |
4335 va_list args; | |
4336 int r; | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4337 dbgprintf("sprintf(0x%x, %s)\n", str, format); |
3465 | 4338 va_start(args, format); |
4339 r = vsprintf(str, format, args); | |
4340 va_end(args); | |
4341 return r; | |
4342 } | |
4343 static int expsscanf(const char* str, const char* format, ...) | |
4344 { | |
4345 va_list args; | |
4346 int r; | |
4347 dbgprintf("sscanf(%s, %s)\n", str, format); | |
4348 va_start(args, format); | |
4349 r = vsscanf(str, format, args); | |
4350 va_end(args); | |
4351 return r; | |
4352 } | |
4353 static void* expfopen(const char* path, const char* mode) | |
4354 { | |
4355 printf("fopen: \"%s\" mode:%s\n", path, mode); | |
4356 //return fopen(path, mode); | |
4357 return fdopen(0, mode); // everything on screen | |
4358 } | |
4359 static int expfprintf(void* stream, const char* format, ...) | |
4360 { | |
4361 va_list args; | |
4362 int r = 0; | |
4363 dbgprintf("fprintf(%p, %s, ...)\n", stream, format); | |
4364 va_start(args, format); | |
4365 r = vfprintf((FILE*) stream, format, args); | |
4366 va_end(args); | |
4367 return r; | |
4368 } | |
4369 | |
4370 static int expprintf(const char* format, ...) | |
4371 { | |
4372 va_list args; | |
4373 int r; | |
4374 dbgprintf("printf(%s, ...)\n", format); | |
4375 va_start(args, format); | |
4376 r = vprintf(format, args); | |
4377 va_end(args); | |
4378 return r; | |
4379 } | |
4380 | |
4381 static char* expgetenv(const char* varname) | |
4382 { | |
4383 char* v = getenv(varname); | |
4384 dbgprintf("getenv(%s) => %s\n", varname, v); | |
4385 return v; | |
4386 } | |
4387 | |
4388 static void* expwcscpy(WCHAR* dst, const WCHAR* src) | |
4389 { | |
4390 WCHAR* p = dst; | |
4391 while ((*p++ = *src++)) | |
4392 ; | |
4393 return dst; | |
4394 } | |
4395 | |
4396 static char* expstrrchr(char* string, int value) | |
4397 { | |
4398 char* result=strrchr(string, value); | |
4399 if(result) | |
4400 dbgprintf("strrchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4401 else | |
4402 dbgprintf("strrchr(0x%x='%s', %d) => 0", string, string, value); | |
4403 return result; | |
4404 } | |
4405 | |
4406 static char* expstrchr(char* string, int value) | |
4407 { | |
4408 char* result=strchr(string, value); | |
4409 if(result) | |
4410 dbgprintf("strchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4411 else | |
4412 dbgprintf("strchr(0x%x='%s', %d) => 0", string, string, value); | |
4413 return result; | |
4414 } | |
4415 static int expstrlen(char* str) | |
4416 { | |
4417 int result=strlen(str); | |
4418 dbgprintf("strlen(0x%x='%s') => %d\n", str, str, result); | |
4419 return result; | |
4420 } | |
4421 static char* expstrcpy(char* str1, const char* str2) | |
4422 { | |
4423 char* result= strcpy(str1, str2); | |
4424 dbgprintf("strcpy(0x%x, 0x%x='%s') => %p\n", str1, str2, str2, result); | |
4425 return result; | |
4426 } | |
9397 | 4427 static char* expstrncpy(char* str1, const char* str2, size_t count) |
4428 { | |
4429 char* result= strncpy(str1, str2, count); | |
4430 dbgprintf("strncpy(0x%x, 0x%x='%s', %d) => %p\n", str1, str2, str2, count, result); | |
4431 return result; | |
4432 } | |
3465 | 4433 static int expstrcmp(const char* str1, const char* str2) |
4434 { | |
4435 int result=strcmp(str1, str2); | |
4436 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4437 return result; | |
4438 } | |
4439 static int expstrncmp(const char* str1, const char* str2,int x) | |
4440 { | |
4441 int result=strncmp(str1, str2,x); | |
4442 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4443 return result; | |
4444 } | |
4445 static char* expstrcat(char* str1, const char* str2) | |
4446 { | |
4447 char* result = strcat(str1, str2); | |
4448 dbgprintf("strcat(0x%x='%s', 0x%x='%s') => %p\n", str1, str1, str2, str2, result); | |
4449 return result; | |
4450 } | |
4451 static char* exp_strdup(const char* str1) | |
4452 { | |
4453 int l = strlen(str1); | |
7386 | 4454 char* result = (char*) my_mreq(l + 1,0); |
3465 | 4455 if (result) |
4456 strcpy(result, str1); | |
4457 dbgprintf("_strdup(0x%x='%s') => %p\n", str1, str1, result); | |
4458 return result; | |
4459 } | |
4460 static int expisalnum(int c) | |
4461 { | |
4462 int result= (int) isalnum(c); | |
4463 dbgprintf("isalnum(0x%x='%c' => %d\n", c, c, result); | |
4464 return result; | |
4465 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4466 static int expisspace(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4467 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4468 int result= (int) isspace(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4469 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
|
4470 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4471 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4472 static int expisalpha(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4473 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4474 int result= (int) isalpha(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4475 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
|
4476 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4477 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4478 static int expisdigit(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4479 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4480 int result= (int) isdigit(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4481 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
|
4482 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4483 } |
3465 | 4484 static void* expmemmove(void* dest, void* src, int n) |
4485 { | |
4486 void* result = memmove(dest, src, n); | |
4487 dbgprintf("memmove(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4488 return result; | |
4489 } | |
4490 static int expmemcmp(void* dest, void* src, int n) | |
4491 { | |
4492 int result = memcmp(dest, src, n); | |
4493 dbgprintf("memcmp(0x%x, 0x%x, %d) => %d\n", dest, src, n, result); | |
4494 return result; | |
4495 } | |
4496 static void* expmemcpy(void* dest, void* src, int n) | |
4497 { | |
4498 void *result = memcpy(dest, src, n); | |
4499 dbgprintf("memcpy(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4500 return result; | |
4501 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4502 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
|
4503 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4504 void *result = memset(dest, c, n); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4505 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
|
4506 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4507 } |
3465 | 4508 static time_t exptime(time_t* t) |
4509 { | |
4510 time_t result = time(t); | |
4511 dbgprintf("time(0x%x) => %d\n", t, result); | |
4512 return result; | |
4513 } | |
4514 | |
4515 static int exprand(void) | |
4516 { | |
4517 return rand(); | |
4518 } | |
4519 | |
4520 static void expsrand(int seed) | |
4521 { | |
4522 srand(seed); | |
4523 } | |
4524 | |
4525 #if 1 | |
4526 | |
22875 | 4527 // preferred compilation with -O2 -ffast-math ! |
3465 | 4528 |
4529 static double explog10(double x) | |
4530 { | |
4531 /*printf("Log10 %f => %f 0x%Lx\n", x, log10(x), *((int64_t*)&x));*/ | |
4532 return log10(x); | |
4533 } | |
4534 | |
4535 static double expcos(double x) | |
4536 { | |
4537 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ | |
4538 return cos(x); | |
4539 } | |
4540 | |
4541 #else | |
4542 | |
4543 static void explog10(void) | |
4544 { | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4545 __asm__ volatile |
3465 | 4546 ( |
4547 "fldl 8(%esp) \n\t" | |
4548 "fldln2 \n\t" | |
4549 "fxch %st(1) \n\t" | |
4550 "fyl2x \n\t" | |
4551 ); | |
4552 } | |
4553 | |
4554 static void expcos(void) | |
4555 { | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4556 __asm__ volatile |
3465 | 4557 ( |
4558 "fldl 8(%esp) \n\t" | |
4559 "fcos \n\t" | |
4560 ); | |
4561 } | |
4562 | |
4563 #endif | |
4564 | |
4565 // this seem to be the only how to make this function working properly | |
4566 // ok - I've spent tremendous amount of time (many many many hours | |
4567 // of debuging fixing & testing - it's almost unimaginable - kabi | |
4568 | |
4569 // _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
|
4570 |
3465 | 4571 static void exp_ftol(void) |
4572 { | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4573 __asm__ volatile |
3465 | 4574 ( |
4575 "sub $12, %esp \n\t" | |
4576 "fstcw -2(%ebp) \n\t" | |
4577 "wait \n\t" | |
3925 | 4578 "movw -2(%ebp), %ax \n\t" |
4579 "orb $0x0C, %ah \n\t" | |
4580 "movw %ax, -4(%ebp) \n\t" | |
3465 | 4581 "fldcw -4(%ebp) \n\t" |
4582 "fistpl -12(%ebp) \n\t" | |
4583 "fldcw -2(%ebp) \n\t" | |
3925 | 4584 "movl -12(%ebp), %eax \n\t" |
4585 //Note: gcc 3.03 does not do the following op if it | |
4586 // knows that ebp=esp | |
4587 "movl %ebp, %esp \n\t" | |
3465 | 4588 ); |
4589 } | |
4590 | |
13739
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4591 #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
|
4592 __asm__ volatile( "fstpl %0;fwait" : "=m" (var2) : ); \ |
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4593 __asm__ volatile( "fstpl %0;fwait" : "=m" (var1) : ) |
13739
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4594 |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4595 static double exp_CIpow(void) |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4596 { |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4597 FPU_DOUBLES(x,y); |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4598 |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4599 dbgprintf("_CIpow(%lf, %lf)\n", x, y); |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4600 return pow(x, y); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4601 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4602 |
3465 | 4603 static double exppow(double x, double y) |
4604 { | |
4605 /*printf("Pow %f %f 0x%Lx 0x%Lx => %f\n", x, y, *((int64_t*)&x), *((int64_t*)&y), pow(x, y));*/ | |
4606 return pow(x, y); | |
4607 } | |
4608 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4609 static double expldexp(double x, int expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4610 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4611 /*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
|
4612 return ldexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4613 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4614 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4615 static double expfrexp(double x, int* expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4616 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4617 /*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
|
4618 return frexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4619 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4620 |
3465 | 4621 |
4622 | |
4623 static int exp_stricmp(const char* s1, const char* s2) | |
4624 { | |
4625 return strcasecmp(s1, s2); | |
4626 } | |
4627 | |
4628 /* from declaration taken from Wine sources - this fountion seems to be | |
4629 * undocumented in any M$ doc */ | |
4630 static int exp_setjmp3(void* jmpbuf, int x) | |
4631 { | |
4632 //dbgprintf("!!!!UNIMPLEMENTED: setjmp3(%p, %d) => 0\n", jmpbuf, x); | |
4633 //return 0; | |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4634 __asm__ volatile |
3465 | 4635 ( |
4636 //"mov 4(%%esp), %%edx \n\t" | |
4637 "mov (%%esp), %%eax \n\t" | |
4638 "mov %%eax, (%%edx) \n\t" // store ebp | |
4639 | |
4640 //"mov %%ebp, (%%edx) \n\t" | |
4641 "mov %%ebx, 4(%%edx) \n\t" | |
4642 "mov %%edi, 8(%%edx) \n\t" | |
4643 "mov %%esi, 12(%%edx) \n\t" | |
4644 "mov %%esp, 16(%%edx) \n\t" | |
4645 | |
4646 "mov 4(%%esp), %%eax \n\t" | |
4647 "mov %%eax, 20(%%edx) \n\t" | |
4648 | |
4649 "movl $0x56433230, 32(%%edx) \n\t" // VC20 ?? | |
4650 "movl $0, 36(%%edx) \n\t" | |
4651 : // output | |
4652 : "d"(jmpbuf) // input | |
7386 | 4653 : "eax" |
3465 | 4654 ); |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
4655 __asm__ volatile |
3465 | 4656 ( |
4657 "mov %%fs:0, %%eax \n\t" // unsure | |
4658 "mov %%eax, 24(%%edx) \n\t" | |
4659 "cmp $0xffffffff, %%eax \n\t" | |
4660 "jnz l1 \n\t" | |
4661 "mov %%eax, 28(%%edx) \n\t" | |
4662 "l1: \n\t" | |
4663 : | |
4664 : | |
7386 | 4665 : "eax" |
3465 | 4666 ); |
4667 | |
4668 return 0; | |
4669 } | |
4670 | |
5234 | 4671 static DWORD WINAPI expGetCurrentProcessId(void) |
4672 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4673 dbgprintf("GetCurrentProcessId(void) => %d\n", getpid()); |
5234 | 4674 return getpid(); //(DWORD)NtCurrentTeb()->pid; |
4675 } | |
4676 | |
4677 | |
4678 typedef struct { | |
4679 UINT wPeriodMin; | |
4680 UINT wPeriodMax; | |
4681 } TIMECAPS, *LPTIMECAPS; | |
4682 | |
4683 static MMRESULT WINAPI exptimeGetDevCaps(LPTIMECAPS lpCaps, UINT wSize) | |
4684 { | |
4685 dbgprintf("timeGetDevCaps(%p, %u) !\n", lpCaps, wSize); | |
4686 | |
4687 lpCaps->wPeriodMin = 1; | |
4688 lpCaps->wPeriodMax = 65535; | |
4689 return 0; | |
4690 } | |
4691 | |
4692 static MMRESULT WINAPI exptimeBeginPeriod(UINT wPeriod) | |
4693 { | |
4694 dbgprintf("timeBeginPeriod(%u) !\n", wPeriod); | |
4695 | |
4696 if (wPeriod < 1 || wPeriod > 65535) return 96+1; //TIMERR_NOCANDO; | |
4697 return 0; | |
4698 } | |
4699 | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
4700 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4701 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
|
4702 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4703 dbgprintf("timeEndPeriod(%u) !\n", wPeriod); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4704 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4705 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
|
4706 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4707 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4708 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4709 |
5234 | 4710 static void WINAPI expGlobalMemoryStatus( |
4711 LPMEMORYSTATUS lpmem | |
4712 ) { | |
4713 static MEMORYSTATUS cached_memstatus; | |
4714 static int cache_lastchecked = 0; | |
4715 SYSTEM_INFO si; | |
4716 FILE *f; | |
4717 | |
4718 if (time(NULL)==cache_lastchecked) { | |
4719 memcpy(lpmem,&cached_memstatus,sizeof(MEMORYSTATUS)); | |
4720 return; | |
4721 } | |
4722 | |
4723 f = fopen( "/proc/meminfo", "r" ); | |
4724 if (f) | |
4725 { | |
4726 char buffer[256]; | |
4727 int total, used, free, shared, buffers, cached; | |
4728 | |
4729 lpmem->dwLength = sizeof(MEMORYSTATUS); | |
4730 lpmem->dwTotalPhys = lpmem->dwAvailPhys = 0; | |
4731 lpmem->dwTotalPageFile = lpmem->dwAvailPageFile = 0; | |
4732 while (fgets( buffer, sizeof(buffer), f )) | |
4733 { | |
4734 /* old style /proc/meminfo ... */ | |
4735 if (sscanf( buffer, "Mem: %d %d %d %d %d %d", &total, &used, &free, &shared, &buffers, &cached )) | |
4736 { | |
4737 lpmem->dwTotalPhys += total; | |
4738 lpmem->dwAvailPhys += free + buffers + cached; | |
4739 } | |
4740 if (sscanf( buffer, "Swap: %d %d %d", &total, &used, &free )) | |
4741 { | |
4742 lpmem->dwTotalPageFile += total; | |
4743 lpmem->dwAvailPageFile += free; | |
4744 } | |
4745 | |
4746 /* new style /proc/meminfo ... */ | |
4747 if (sscanf(buffer, "MemTotal: %d", &total)) | |
4748 lpmem->dwTotalPhys = total*1024; | |
4749 if (sscanf(buffer, "MemFree: %d", &free)) | |
4750 lpmem->dwAvailPhys = free*1024; | |
4751 if (sscanf(buffer, "SwapTotal: %d", &total)) | |
4752 lpmem->dwTotalPageFile = total*1024; | |
4753 if (sscanf(buffer, "SwapFree: %d", &free)) | |
4754 lpmem->dwAvailPageFile = free*1024; | |
4755 if (sscanf(buffer, "Buffers: %d", &buffers)) | |
4756 lpmem->dwAvailPhys += buffers*1024; | |
4757 if (sscanf(buffer, "Cached: %d", &cached)) | |
4758 lpmem->dwAvailPhys += cached*1024; | |
4759 } | |
4760 fclose( f ); | |
4761 | |
4762 if (lpmem->dwTotalPhys) | |
4763 { | |
4764 DWORD TotalPhysical = lpmem->dwTotalPhys+lpmem->dwTotalPageFile; | |
4765 DWORD AvailPhysical = lpmem->dwAvailPhys+lpmem->dwAvailPageFile; | |
4766 lpmem->dwMemoryLoad = (TotalPhysical-AvailPhysical) | |
4767 / (TotalPhysical / 100); | |
4768 } | |
4769 } else | |
4770 { | |
4771 /* FIXME: should do something for other systems */ | |
4772 lpmem->dwMemoryLoad = 0; | |
4773 lpmem->dwTotalPhys = 16*1024*1024; | |
4774 lpmem->dwAvailPhys = 16*1024*1024; | |
4775 lpmem->dwTotalPageFile = 16*1024*1024; | |
4776 lpmem->dwAvailPageFile = 16*1024*1024; | |
4777 } | |
4778 expGetSystemInfo(&si); | |
4779 lpmem->dwTotalVirtual = si.lpMaximumApplicationAddress-si.lpMinimumApplicationAddress; | |
4780 /* FIXME: we should track down all the already allocated VM pages and substract them, for now arbitrarily remove 64KB so that it matches NT */ | |
4781 lpmem->dwAvailVirtual = lpmem->dwTotalVirtual-64*1024; | |
4782 memcpy(&cached_memstatus,lpmem,sizeof(MEMORYSTATUS)); | |
4783 cache_lastchecked = time(NULL); | |
4784 | |
4785 /* it appears some memory display programs want to divide by these values */ | |
4786 if(lpmem->dwTotalPageFile==0) | |
4787 lpmem->dwTotalPageFile++; | |
4788 | |
4789 if(lpmem->dwAvailPageFile==0) | |
4790 lpmem->dwAvailPageFile++; | |
4791 } | |
4792 | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4793 static INT WINAPI expGetThreadPriority(HANDLE hthread) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4794 { |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4795 dbgprintf("GetThreadPriority(%p)\n",hthread); |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4796 return 0; |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4797 } |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4798 |
5234 | 4799 /********************************************************************** |
4800 * SetThreadPriority [KERNEL32.@] Sets priority for thread. | |
4801 * | |
4802 * RETURNS | |
4803 * Success: TRUE | |
4804 * Failure: FALSE | |
4805 */ | |
4806 static WIN_BOOL WINAPI expSetThreadPriority( | |
4807 HANDLE hthread, /* [in] Handle to thread */ | |
4808 INT priority) /* [in] Thread priority level */ | |
4809 { | |
4810 dbgprintf("SetThreadPriority(%p,%d)\n",hthread,priority); | |
4811 return TRUE; | |
4812 } | |
4813 | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4814 static void WINAPI expTerminateProcess( DWORD process, DWORD status ) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4815 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4816 printf("EXIT - process %ld code %ld\n", process, status); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4817 exit(status); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4818 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4819 |
5234 | 4820 static void WINAPI expExitProcess( DWORD status ) |
4821 { | |
8451 | 4822 printf("EXIT - code %ld\n",status); |
5234 | 4823 exit(status); |
4824 } | |
4825 | |
4826 static INT WINAPI expMessageBoxA(HWND hWnd, LPCSTR text, LPCSTR title, UINT type){ | |
4827 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
|
4828 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4829 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
|
4830 return IDIGNORE; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4831 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4832 return IDOK; |
5234 | 4833 } |
4834 | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4835 /* 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
|
4836 |
21368 | 4837 /** |
4838 * \brief this symbol is defined within exp_EH_prolog_dummy | |
4839 * \param dest jump target | |
4840 */ | |
4841 void exp_EH_prolog(void *dest); | |
30659 | 4842 void exp_EH_prolog_dummy(void); |
21368 | 4843 //! just a dummy function that acts a container for the asm section |
4844 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
|
4845 __asm__ volatile ( |
21368 | 4846 // take care, this "function" may not change flags or |
4847 // registers besides eax (which is also why we can't use | |
4848 // exp_EH_prolog_dummy directly) | |
4849 MANGLE(exp_EH_prolog)": \n\t" | |
4850 "pop %eax \n\t" | |
4851 "push %ebp \n\t" | |
4852 "mov %esp, %ebp \n\t" | |
4853 "lea -12(%esp), %esp \n\t" | |
4854 "jmp *%eax \n\t" | |
4855 ); | |
4856 } | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4857 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4858 #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
|
4859 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
|
4860 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4861 // 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
|
4862 return htonl(hostlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4863 } |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4864 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4865 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
|
4866 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4867 // 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
|
4868 return ntohl(netlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4869 } |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4870 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4871 static char* WINAPI expSysAllocStringLen(char *pch, unsigned cch) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4872 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4873 char *str; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4874 dbgprintf("SysAllocStringLen('%s', %d)\n", pch, cch); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4875 str = malloc(cch * 2 + sizeof(unsigned) + 2); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4876 *(unsigned *)str = cch; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4877 str += sizeof(unsigned); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4878 if (pch) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4879 memcpy(str, pch, cch * 2); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4880 str[cch * 2] = 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4881 str[cch * 2 + 1] = 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4882 return str; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4883 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4884 |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4885 static void WINAPI expSysFreeString(char *str) |
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 if (str) { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4888 free(str - sizeof(unsigned)); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4889 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4890 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
4891 |
7386 | 4892 static void WINAPI expVariantInit(void* p) |
4893 { | |
4894 printf("InitCommonControls called!\n"); | |
4895 return; | |
4896 } | |
2779 | 4897 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4898 static int WINAPI expRegisterClassA(const void/*WNDCLASSA*/ *wc) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4899 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4900 dbgprintf("RegisterClassA(%p) => random id\n", wc); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4901 return time(NULL); /* be precise ! */ |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4902 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4903 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4904 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
|
4905 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4906 dbgprintf("UnregisterClassA(%s, %p) => 0\n", className, hInstance); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4907 return 0; |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4908 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4909 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
4910 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4911 /* 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
|
4912 static int expSysStringByteLen(void *str) |
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 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
|
4915 return strlen(str); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4916 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4917 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4918 static int expDirectDrawCreate(void) |
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 dbgprintf("DirectDrawCreate(...) => NULL\n"); |
8451 | 4921 return 0; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4922 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4923 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4924 #if 1 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4925 typedef struct tagPALETTEENTRY { |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4926 BYTE peRed; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4927 BYTE peGreen; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4928 BYTE peBlue; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4929 BYTE peFlags; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4930 } PALETTEENTRY; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4931 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4932 typedef struct tagLOGPALETTE { |
30790
9f30c9cb599b
Fix crashes in CreatePalette by fixing the LOGPALETTE struct.
sesse
parents:
30789
diff
changeset
|
4933 WORD palVersion; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4934 WORD palNumEntries; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4935 PALETTEENTRY palPalEntry[1]; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4936 } LOGPALETTE; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4937 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4938 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
|
4939 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4940 HPALETTE test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4941 int i; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4942 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4943 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
|
4944 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4945 i = sizeof(LOGPALETTE)+((lpgpl->palNumEntries-1)*sizeof(PALETTEENTRY)); |
30702 | 4946 test = malloc(i); |
8451 | 4947 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
|
4948 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4949 return test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4950 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4951 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4952 static int expCreatePalette(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4953 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4954 dbgprintf("CreatePalette(...) => NULL\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4955 return NULL; |
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 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4958 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4959 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
|
4960 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4961 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
|
4962 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4963 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4964 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4965 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4966 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4967 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4968 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4969 #if 0 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4970 typedef struct tagPOINT { |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4971 LONG x; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4972 LONG y; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
4973 } POINT, *PPOINT; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4974 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4975 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4976 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
|
4977 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4978 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
|
4979 p->x = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4980 p->y = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4981 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4982 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4983 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4984 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4985 /* for m3jpeg */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4986 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
|
4987 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4988 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
|
4989 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4990 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4991 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4992 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
|
4993 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4994 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
|
4995 return 1; |
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 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4998 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
|
4999 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
|
5000 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5001 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
|
5002 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
|
5003 return 0x42424242; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5004 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5005 |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5006 static void WINAPI expRegisterClipboardFormatA(const char *name) { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5007 dbgprintf("RegisterClipboardFormatA(0x%x = %s)\n", name, name); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5008 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5009 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5010 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5011 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
|
5012 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5013 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
|
5014 if (!ptr) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5015 return my_mreq(size,0); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5016 else |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
5017 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
|
5018 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5019 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5020 /* 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
|
5021 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
|
5022 { |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5023 return 1; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5024 } |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5025 |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5026 static char * WINAPI expPathFindExtensionA(const char *path) { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5027 char *ext; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5028 if (!path) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5029 ext = NULL; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5030 else { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5031 ext = strrchr(path, '.'); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5032 if (!ext) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5033 ext = &path[strlen(path)]; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5034 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5035 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
|
5036 return ext; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5037 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5038 |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5039 static char * WINAPI expPathFindFileNameA(const char *path) { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5040 char *name; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5041 if (!path || strlen(path) < 2) |
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 else { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5044 name = strrchr(path - 1, '\\'); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5045 if (!name) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5046 name = path; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5047 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5048 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
|
5049 return name; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5050 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5051 |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5052 static double expfloor(double x) |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5053 { |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5054 dbgprintf("floor(%lf)\n", x); |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5055 return floor(x); |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5056 } |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5057 |
13751 | 5058 #define FPU_DOUBLE(var) double var; \ |
27757
b5a46071062a
Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents:
27754
diff
changeset
|
5059 __asm__ volatile( "fstpl %0;fwait" : "=m" (var) : ) |
13751 | 5060 |
5061 static double exp_CIcos(void) | |
5062 { | |
5063 FPU_DOUBLE(x); | |
5064 | |
5065 dbgprintf("_CIcos(%lf)\n", x); | |
5066 return cos(x); | |
5067 } | |
5068 | |
5069 static double exp_CIsin(void) | |
5070 { | |
5071 FPU_DOUBLE(x); | |
5072 | |
5073 dbgprintf("_CIsin(%lf)\n", x); | |
5074 return sin(x); | |
5075 } | |
5076 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5077 static double exp_CIsqrt(void) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5078 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5079 FPU_DOUBLE(x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5080 |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5081 dbgprintf("_CIsqrt(%lf)\n", x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5082 return sqrt(x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5083 } |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5084 |
17071 | 5085 /* Needed by rp8 sipr decoder */ |
5086 static LPSTR WINAPI expCharNextA(LPCSTR ptr) | |
5087 { | |
5088 if (!*ptr) return (LPSTR)ptr; | |
5089 // dbgprintf("CharNextA(0x%08x), %s\n", ptr, ptr); | |
5090 return (LPSTR)(ptr + 1); | |
5091 } | |
5092 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5093 // Fake implementation, needed by wvc1dmod.dll |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5094 static int WINAPI expPropVariantClear(void *pvar) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5095 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5096 // dbgprintf("PropVariantclear (0x%08x), %s\n", ptr, ptr); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5097 return 1; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5098 } |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5099 |
20652
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5100 // 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
|
5101 #define LPDEVMODEA void* |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5102 // Dummy implementation, always return 1 |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5103 // 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
|
5104 static WIN_BOOL WINAPI expEnumDisplaySettingsA(LPCSTR name ,DWORD n, |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5105 LPDEVMODEA devmode) |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5106 { |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5107 dbgprintf("EnumDisplaySettingsA (dummy) => 1\n"); |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5108 return 1; |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5109 } |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5110 |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5111 // 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
|
5112 // 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
|
5113 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
|
5114 { |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5115 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
|
5116 return 0; |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5117 } |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5118 |
26444
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5119 /* 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
|
5120 Needed by SCLS.DLL */ |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5121 static int exp_0Lockit_dummy(void) |
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 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
|
5124 return 0; |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5125 } |
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 /* 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
|
5128 Needed by SCLS.DLL */ |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5129 static int exp_1Lockit_dummy(void) |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5130 { |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5131 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
|
5132 return 0; |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5133 } |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5134 |
29725
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5135 static void * WINAPI expEncodePointer(void *p) |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5136 { |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5137 return p; |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5138 } |
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 static void * WINAPI expDecodePointer(void *p) |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5141 { |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5142 return p; |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5143 } |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5144 |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5145 static DWORD WINAPI expGetThreadLocale(void) |
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 return 0; |
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 |
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 * 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
|
5152 */ |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5153 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
|
5154 { |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5155 if (lctype == 0x1004) { // LOCALE_IDEFAULTANSICODEPAGE |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5156 if (cchData < 4) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5157 return cchData == 0 ? 4 : 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5158 strcpy(lpLCData, "437"); |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5159 return 4; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5160 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5161 return 0; |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5162 } |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5163 |
1 | 5164 struct exports |
5165 { | |
5166 char name[64]; | |
5167 int id; | |
5168 void* func; | |
5169 }; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5170 struct libs |
1 | 5171 { |
5172 char name[64]; | |
5173 int length; | |
5174 struct exports* exps; | |
5175 }; | |
5176 | |
5177 #define FF(X,Y) \ | |
3465 | 5178 {#X, Y, (void*)exp##X}, |
5179 | |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5180 #define UNDEFF(X, Y) \ |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5181 {#X, Y, (void*)-1}, |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5182 |
3465 | 5183 struct exports exp_kernel32[]= |
5184 { | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5185 FF(GetVolumeInformationA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5186 FF(GetDriveTypeA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5187 FF(GetLogicalDriveStringsA,-1) |
3465 | 5188 FF(IsBadWritePtr, 357) |
5189 FF(IsBadReadPtr, 354) | |
5190 FF(IsBadStringPtrW, -1) | |
5191 FF(IsBadStringPtrA, -1) | |
5192 FF(DisableThreadLibraryCalls, -1) | |
5193 FF(CreateThread, -1) | |
30819 | 5194 FF(ResumeThread, -1) |
3465 | 5195 FF(CreateEventA, -1) |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5196 FF(CreateEventW, -1) |
3465 | 5197 FF(SetEvent, -1) |
5198 FF(ResetEvent, -1) | |
5199 FF(WaitForSingleObject, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5200 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5201 FF(WaitForMultipleObjects, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5202 FF(ExitThread, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5203 #endif |
3465 | 5204 FF(GetSystemInfo, -1) |
5205 FF(GetVersion, 332) | |
5206 FF(HeapCreate, 461) | |
5207 FF(HeapAlloc, -1) | |
5208 FF(HeapDestroy, -1) | |
5209 FF(HeapFree, -1) | |
5210 FF(HeapSize, -1) | |
5211 FF(HeapReAlloc,-1) | |
5212 FF(GetProcessHeap, -1) | |
5213 FF(VirtualAlloc, -1) | |
5214 FF(VirtualFree, -1) | |
5215 FF(InitializeCriticalSection, -1) | |
30598
a9eac13b820a
Add a InitializeCriticalSectionAndSpinCount function.
reimar
parents:
30597
diff
changeset
|
5216 FF(InitializeCriticalSectionAndSpinCount, -1) |
3465 | 5217 FF(EnterCriticalSection, -1) |
5218 FF(LeaveCriticalSection, -1) | |
5219 FF(DeleteCriticalSection, -1) | |
5220 FF(TlsAlloc, -1) | |
5221 FF(TlsFree, -1) | |
5222 FF(TlsGetValue, -1) | |
5223 FF(TlsSetValue, -1) | |
5224 FF(GetCurrentThreadId, -1) | |
5225 FF(GetCurrentProcess, -1) | |
5226 FF(LocalAlloc, -1) | |
5227 FF(LocalReAlloc,-1) | |
5228 FF(LocalLock, -1) | |
5229 FF(GlobalAlloc, -1) | |
5230 FF(GlobalReAlloc, -1) | |
5231 FF(GlobalLock, -1) | |
5232 FF(GlobalSize, -1) | |
5233 FF(MultiByteToWideChar, 427) | |
5234 FF(WideCharToMultiByte, -1) | |
5235 FF(GetVersionExA, -1) | |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5236 FF(GetVersionExW, -1) |
3465 | 5237 FF(CreateSemaphoreA, -1) |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5238 FF(CreateSemaphoreW, -1) |
3465 | 5239 FF(QueryPerformanceCounter, -1) |
5240 FF(QueryPerformanceFrequency, -1) | |
5241 FF(LocalHandle, -1) | |
5242 FF(LocalUnlock, -1) | |
5243 FF(LocalFree, -1) | |
5244 FF(GlobalHandle, -1) | |
5245 FF(GlobalUnlock, -1) | |
5246 FF(GlobalFree, -1) | |
5247 FF(LoadResource, -1) | |
5248 FF(ReleaseSemaphore, -1) | |
30811 | 5249 FF(CreateMutexA, -1) |
30858
62c00b7dd846
Implement GetVersionExW with the same data as GetVersionExA but taking in a
sesse
parents:
30846
diff
changeset
|
5250 FF(CreateMutexW, -1) |
30811 | 5251 FF(ReleaseMutex, -1) |
30819 | 5252 FF(SignalObjectAndWait, -1) |
3465 | 5253 FF(FindResourceA, -1) |
5254 FF(LockResource, -1) | |
5255 FF(FreeResource, -1) | |
5256 FF(SizeofResource, -1) | |
5257 FF(CloseHandle, -1) | |
5258 FF(GetCommandLineA, -1) | |
5259 FF(GetEnvironmentStringsW, -1) | |
5260 FF(FreeEnvironmentStringsW, -1) | |
5261 FF(FreeEnvironmentStringsA, -1) | |
5262 FF(GetEnvironmentStrings, -1) | |
5263 FF(GetStartupInfoA, -1) | |
5264 FF(GetStdHandle, -1) | |
5265 FF(GetFileType, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5266 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5267 FF(GetFileAttributesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5268 #endif |
3465 | 5269 FF(SetHandleCount, -1) |
5270 FF(GetACP, -1) | |
5271 FF(GetModuleFileNameA, -1) | |
5272 FF(SetUnhandledExceptionFilter, -1) | |
5273 FF(LoadLibraryA, -1) | |
5274 FF(GetProcAddress, -1) | |
5275 FF(FreeLibrary, -1) | |
5276 FF(CreateFileMappingA, -1) | |
5277 FF(OpenFileMappingA, -1) | |
5278 FF(MapViewOfFile, -1) | |
5279 FF(UnmapViewOfFile, -1) | |
5280 FF(Sleep, -1) | |
5281 FF(GetModuleHandleA, -1) | |
30597 | 5282 FF(GetModuleHandleW, -1) |
3465 | 5283 FF(GetProfileIntA, -1) |
5284 FF(GetPrivateProfileIntA, -1) | |
5285 FF(GetPrivateProfileStringA, -1) | |
5286 FF(WritePrivateProfileStringA, -1) | |
5287 FF(GetLastError, -1) | |
5288 FF(SetLastError, -1) | |
5289 FF(InterlockedIncrement, -1) | |
5290 FF(InterlockedDecrement, -1) | |
5291 FF(GetTimeZoneInformation, -1) | |
5292 FF(OutputDebugStringA, -1) | |
5293 FF(GetLocalTime, -1) | |
5294 FF(GetSystemTime, -1) | |
7386 | 5295 FF(GetSystemTimeAsFileTime, -1) |
3465 | 5296 FF(GetEnvironmentVariableA, -1) |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
5297 FF(SetEnvironmentVariableA, -1) |
3465 | 5298 FF(RtlZeroMemory,-1) |
5299 FF(RtlMoveMemory,-1) | |
5300 FF(RtlFillMemory,-1) | |
5301 FF(GetTempPathA,-1) | |
5302 FF(FindFirstFileA,-1) | |
5303 FF(FindNextFileA,-1) | |
5304 FF(FindClose,-1) | |
5305 FF(FileTimeToLocalFileTime,-1) | |
5306 FF(DeleteFileA,-1) | |
5307 FF(ReadFile,-1) | |
5308 FF(WriteFile,-1) | |
5309 FF(SetFilePointer,-1) | |
5310 FF(GetTempFileNameA,-1) | |
5311 FF(CreateFileA,-1) | |
5312 FF(GetSystemDirectoryA,-1) | |
5313 FF(GetWindowsDirectoryA,-1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5314 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5315 FF(GetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5316 FF(SetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5317 FF(CreateDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5318 #endif |
5234 | 5319 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
|
5320 FF(GetFullPathNameA,-1) |
3465 | 5321 FF(SetErrorMode, -1) |
5322 FF(IsProcessorFeaturePresent, -1) | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5323 FF(IsDebuggerPresent, -1) |
3465 | 5324 FF(GetProcessAffinityMask, -1) |
5325 FF(InterlockedExchange, -1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5326 FF(InterlockedCompareExchange, -1) |
3465 | 5327 FF(MulDiv, -1) |
5328 FF(lstrcmpiA, -1) | |
5329 FF(lstrlenA, -1) | |
5330 FF(lstrcpyA, -1) | |
5331 FF(lstrcatA, -1) | |
5332 FF(lstrcpynA,-1) | |
5333 FF(GetProcessVersion,-1) | |
5334 FF(GetCurrentThread,-1) | |
5335 FF(GetOEMCP,-1) | |
5336 FF(GetCPInfo,-1) | |
5337 FF(DuplicateHandle,-1) | |
5338 FF(GetTickCount, -1) | |
5339 FF(SetThreadAffinityMask,-1) | |
5234 | 5340 FF(GetCurrentProcessId,-1) |
5341 FF(GlobalMemoryStatus,-1) | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
5342 FF(GetThreadPriority,-1) |
5234 | 5343 FF(SetThreadPriority,-1) |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5344 FF(TerminateProcess,-1) |
5234 | 5345 FF(ExitProcess,-1) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5346 {"LoadLibraryExA", -1, (void*)&LoadLibraryExA}, |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5347 FF(SetThreadIdealProcessor,-1) |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5348 FF(SetProcessAffinityMask, -1) |
29725
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5349 FF(EncodePointer, -1) |
d375073c4447
Implement dummy EncodePointer/DecodePointer functions needed for e.g. lagarith.dll
reimar
parents:
29640
diff
changeset
|
5350 FF(DecodePointer, -1) |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5351 FF(GetThreadLocale, -1) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5352 FF(GetLocaleInfoA, -1) |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5353 UNDEFF(FlsAlloc, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5354 UNDEFF(FlsGetValue, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5355 UNDEFF(FlsSetValue, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5356 UNDEFF(FlsFree, -1) |
1 | 5357 }; |
5358 | |
5359 struct exports exp_msvcrt[]={ | |
3465 | 5360 FF(malloc, -1) |
5361 FF(_initterm, -1) | |
7386 | 5362 FF(__dllonexit, -1) |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5363 FF(_snprintf,-1) |
3465 | 5364 FF(free, -1) |
5365 {"??3@YAXPAX@Z", -1, expdelete}, | |
5366 {"??2@YAPAXI@Z", -1, expnew}, | |
5367 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
5368 {"_winver",-1,(void*)&_winver}, |
3465 | 5369 FF(strrchr, -1) |
5370 FF(strchr, -1) | |
5371 FF(strlen, -1) | |
5372 FF(strcpy, -1) | |
9397 | 5373 FF(strncpy, -1) |
3465 | 5374 FF(wcscpy, -1) |
5375 FF(strcmp, -1) | |
5376 FF(strncmp, -1) | |
5377 FF(strcat, -1) | |
5378 FF(_stricmp,-1) | |
5379 FF(_strdup,-1) | |
5380 FF(_setjmp3,-1) | |
5381 FF(isalnum, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5382 FF(isspace, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5383 FF(isalpha, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5384 FF(isdigit, -1) |
3465 | 5385 FF(memmove, -1) |
5386 FF(memcmp, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5387 FF(memset, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5388 FF(memcpy, -1) |
3465 | 5389 FF(time, -1) |
5390 FF(rand, -1) | |
5391 FF(srand, -1) | |
5392 FF(log10, -1) | |
5393 FF(pow, -1) | |
5394 FF(cos, -1) | |
5395 FF(_ftol,-1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5396 FF(_CIpow,-1) |
13751 | 5397 FF(_CIcos,-1) |
5398 FF(_CIsin,-1) | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5399 FF(_CIsqrt,-1) |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5400 FF(ldexp,-1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5401 FF(frexp,-1) |
3465 | 5402 FF(sprintf,-1) |
5403 FF(sscanf,-1) | |
5404 FF(fopen,-1) | |
5405 FF(fprintf,-1) | |
5406 FF(printf,-1) | |
5407 FF(getenv,-1) | |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5408 FF(floor,-1) |
15474 | 5409 /* needed by frapsvid.dll */ |
5410 {"strstr",-1,(char *)&strstr}, | |
5411 {"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
|
5412 FF(_EH_prolog,-1) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5413 FF(calloc,-1) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5414 {"ceil",-1,(void*)&ceil}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5415 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5416 {"clock",-1,(void*)&clock}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5417 {"memchr",-1,(void*)&memchr}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5418 {"vfprintf",-1,(void*)&vfprintf}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5419 // {"realloc",-1,(void*)&realloc}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5420 FF(realloc,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5421 {"puts",-1,(void*)&puts} |
1 | 5422 }; |
5423 struct exports exp_winmm[]={ | |
3465 | 5424 FF(GetDriverModuleHandle, -1) |
5425 FF(timeGetTime, -1) | |
5426 FF(DefDriverProc, -1) | |
5427 FF(OpenDriverA, -1) | |
5428 FF(OpenDriver, -1) | |
5234 | 5429 FF(timeGetDevCaps, -1) |
5430 FF(timeBeginPeriod, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5431 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5432 FF(timeEndPeriod, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5433 FF(waveOutGetNumDevs, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5434 #endif |
1 | 5435 }; |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5436 struct exports exp_psapi[]={ |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5437 FF(GetModuleBaseNameA, -1) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5438 }; |
1 | 5439 struct exports exp_user32[]={ |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5440 FF(LoadIconA,-1) |
3465 | 5441 FF(LoadStringA, -1) |
5442 FF(wsprintfA, -1) | |
5443 FF(GetDC, -1) | |
5444 FF(GetDesktopWindow, -1) | |
5445 FF(ReleaseDC, -1) | |
5446 FF(IsRectEmpty, -1) | |
5447 FF(LoadCursorA,-1) | |
5448 FF(SetCursor,-1) | |
5449 FF(GetCursorPos,-1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5450 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5451 FF(ShowCursor,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5452 #endif |
3465 | 5453 FF(RegisterWindowMessageA,-1) |
5454 FF(GetSystemMetrics,-1) | |
5455 FF(GetSysColor,-1) | |
5456 FF(GetSysColorBrush,-1) | |
5457 FF(GetWindowDC, -1) | |
5458 FF(DrawTextA, -1) | |
5234 | 5459 FF(MessageBoxA, -1) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
5460 FF(RegisterClassA, -1) |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
5461 FF(UnregisterClassA, -1) |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5462 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5463 FF(GetWindowRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5464 FF(MonitorFromWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5465 FF(MonitorFromRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5466 FF(MonitorFromPoint, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5467 FF(EnumDisplayMonitors, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5468 FF(GetMonitorInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5469 FF(EnumDisplayDevicesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5470 FF(GetClientRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5471 FF(ClientToScreen, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5472 FF(IsWindowVisible, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5473 FF(GetActiveWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5474 FF(GetClassNameA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5475 FF(GetClassInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5476 FF(GetWindowLongA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5477 FF(EnumWindows, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5478 FF(GetWindowThreadProcessId, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5479 FF(CreateWindowExA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5480 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5481 FF(MessageBeep, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5482 FF(DialogBoxParamA, -1) |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5483 FF(RegisterClipboardFormatA, -1) |
17071 | 5484 FF(CharNextA, -1) |
20652
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5485 FF(EnumDisplaySettingsA, -1) |
1 | 5486 }; |
5487 struct exports exp_advapi32[]={ | |
3465 | 5488 FF(RegCloseKey, -1) |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
5489 FF(RegCreateKeyA, -1) |
3465 | 5490 FF(RegCreateKeyExA, -1) |
5491 FF(RegEnumKeyExA, -1) | |
5492 FF(RegEnumValueA, -1) | |
5493 FF(RegOpenKeyA, -1) | |
5494 FF(RegOpenKeyExA, -1) | |
5495 FF(RegQueryValueExA, -1) | |
5496 FF(RegSetValueExA, -1) | |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
5497 FF(RegQueryInfoKeyA, -1) |
1 | 5498 }; |
5499 struct exports exp_gdi32[]={ | |
3465 | 5500 FF(CreateCompatibleDC, -1) |
5501 FF(CreateFontA, -1) | |
5502 FF(DeleteDC, -1) | |
5503 FF(DeleteObject, -1) | |
5504 FF(GetDeviceCaps, -1) | |
5505 FF(GetSystemPaletteEntries, -1) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5506 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5507 FF(CreatePalette, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5508 FF(GetObjectA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5509 FF(CreateRectRgn, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5510 #endif |
1 | 5511 }; |
5512 struct exports exp_version[]={ | |
3465 | 5513 FF(GetFileVersionInfoSizeA, -1) |
1 | 5514 }; |
128 | 5515 struct exports exp_ole32[]={ |
3465 | 5516 FF(CoCreateFreeThreadedMarshaler,-1) |
5517 FF(CoCreateInstance, -1) | |
5518 FF(CoInitialize, -1) | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
5519 FF(CoInitializeEx, -1) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
5520 FF(CoUninitialize, -1) |
3465 | 5521 FF(CoTaskMemAlloc, -1) |
5522 FF(CoTaskMemFree, -1) | |
5523 FF(StringFromGUID2, -1) | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5524 FF(PropVariantClear, -1) |
128 | 5525 }; |
3465 | 5526 // do we really need crtdll ??? |
5527 // msvcrt is the correct place probably... | |
130 | 5528 struct exports exp_crtdll[]={ |
3465 | 5529 FF(memcpy, -1) |
5530 FF(wcscpy, -1) | |
130 | 5531 }; |
2069 | 5532 struct exports exp_comctl32[]={ |
3465 | 5533 FF(StringFromGUID2, -1) |
5534 FF(InitCommonControls, 17) | |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5535 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5536 FF(CreateUpDownControl, 16) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5537 #endif |
2069 | 5538 }; |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5539 struct exports exp_wsock32[]={ |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5540 FF(htonl,8) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5541 FF(ntohl,14) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5542 }; |
3465 | 5543 struct exports exp_msdmo[]={ |
5544 FF(memcpy, -1) // just test | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5545 FF(MoCopyMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5546 FF(MoCreateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5547 FF(MoDeleteMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5548 FF(MoDuplicateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5549 FF(MoFreeMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5550 FF(MoInitMediaType, -1) |
7386 | 5551 }; |
5552 struct exports exp_oleaut32[]={ | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5553 FF(SysAllocStringLen, 4) |
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5554 FF(SysFreeString, 6) |
7386 | 5555 FF(VariantInit, 8) |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5556 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5557 FF(SysStringByteLen, 149) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5558 #endif |
3465 | 5559 }; |
6359 | 5560 |
5561 /* realplayer8: | |
5562 DLL Name: PNCRT.dll | |
5563 vma: Hint/Ord Member-Name | |
5564 22ff4 615 free | |
5565 2302e 250 _ftol | |
5566 22fea 666 malloc | |
5567 2303e 609 fprintf | |
5568 2305e 167 _adjust_fdiv | |
5569 23052 280 _initterm | |
5570 | |
5571 22ffc 176 _beginthreadex | |
5572 23036 284 _iob | |
5573 2300e 85 __CxxFrameHandler | |
5574 23022 411 _purecall | |
5575 */ | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5576 #ifdef REALPLAYER |
6359 | 5577 struct exports exp_pncrt[]={ |
5578 FF(malloc, -1) // just test | |
5579 FF(free, -1) // just test | |
5580 FF(fprintf, -1) // just test | |
5581 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
5582 FF(_ftol,-1) | |
5583 FF(_initterm, -1) | |
9397 | 5584 {"??3@YAXPAX@Z", -1, expdelete}, |
5585 {"??2@YAPAXI@Z", -1, expnew}, | |
5586 FF(__dllonexit, -1) | |
5587 FF(strncpy, -1) | |
5588 FF(_CIpow,-1) | |
5589 FF(calloc,-1) | |
5590 FF(memmove, -1) | |
17072
4c50b2f11ad8
export ldexp() and frexp() in pncrt, they are needed by rp8 sipr dll
rtognimp
parents:
17071
diff
changeset
|
5591 FF(ldexp, -1) |
4c50b2f11ad8
export ldexp() and frexp() in pncrt, they are needed by rp8 sipr dll
rtognimp
parents:
17071
diff
changeset
|
5592 FF(frexp, -1) |
6359 | 5593 }; |
7386 | 5594 #endif |
3465 | 5595 |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5596 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5597 struct exports exp_ddraw[]={ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5598 FF(DirectDrawCreate, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5599 }; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5600 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5601 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5602 struct exports exp_comdlg32[]={ |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5603 FF(GetOpenFileNameA, -1) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5604 }; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5605 |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5606 struct exports exp_shlwapi[]={ |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5607 FF(PathFindExtensionA, -1) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5608 FF(PathFindFileNameA, -1) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5609 }; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5610 |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5611 struct exports exp_msvcr80[]={ |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5612 FF(_CIpow,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5613 FF(_CIsin,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5614 FF(_CIcos,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5615 FF(_CIsqrt,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5616 FF(memset,-1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5617 FF(_initterm_e, -1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5618 FF(_initterm, -1) |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5619 FF(_decode_pointer, -1) |
29640 | 5620 /* needed by KGV1-VFW.dll */ |
5621 {"??2@YAPAXI@Z", -1, expnew}, | |
5622 {"??3@YAXPAX@Z", -1, expdelete} | |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5623 }; |
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5624 |
26444
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5625 struct exports exp_msvcp60[]={ |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5626 {"??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
|
5627 {"??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
|
5628 }; |
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5629 |
1 | 5630 #define LL(X) \ |
3465 | 5631 {#X".dll", sizeof(exp_##X)/sizeof(struct exports), exp_##X}, |
1 | 5632 |
5633 struct libs libraries[]={ | |
3465 | 5634 LL(kernel32) |
5635 LL(msvcrt) | |
5636 LL(winmm) | |
30489
8ee6bb538f53
Add stubs for several functions, needed for CineForm codec.
reimar
parents:
30278
diff
changeset
|
5637 LL(psapi) |
3465 | 5638 LL(user32) |
5639 LL(advapi32) | |
5640 LL(gdi32) | |
5641 LL(version) | |
5642 LL(ole32) | |
7386 | 5643 LL(oleaut32) |
3465 | 5644 LL(crtdll) |
5645 LL(comctl32) | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5646 LL(wsock32) |
3465 | 5647 LL(msdmo) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5648 #ifdef REALPLAYER |
6359 | 5649 LL(pncrt) |
7386 | 5650 #endif |
30502
a459aa73212f
Get rid of pointless CONFIG_QTX_CODECS --> QTX preprocessor indirection.
diego
parents:
30500
diff
changeset
|
5651 #ifdef CONFIG_QTX_CODECS |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5652 LL(ddraw) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5653 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5654 LL(comdlg32) |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5655 LL(shlwapi) |
26441
586d7ee3c106
Add support for msn siren audio coced via binary dll sirenacm.dll
rtogni
parents:
26111
diff
changeset
|
5656 LL(msvcr80) |
26444
cea51ac82475
Support for MSU SCLS (Screen Capture Lossless Codec) with SCLS.DLL
rtogni
parents:
26441
diff
changeset
|
5657 LL(msvcp60) |
1 | 5658 }; |
7386 | 5659 |
22406
9977fe541c4d
The original asm code for the stub returned 0, restore that behaviour.
reimar
parents:
22367
diff
changeset
|
5660 static WIN_BOOL WINAPI ext_stubs(void) |
3465 | 5661 { |
30278 | 5662 // NOTE! these magic values will be replaced at runtime, make sure |
5663 // add_stub can still find them if you change them. | |
30225 | 5664 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
|
5665 // make sure gcc does not do eip-relative call or something like that |
30226 | 5666 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
|
5667 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
|
5668 return 0; |
3465 | 5669 } |
5670 | |
21366
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5671 #define MAX_STUB_SIZE 0x60 |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5672 #define MAX_NUM_STUBS 200 |
7386 | 5673 static int pos=0; |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5674 static char *extcode = NULL; |
3465 | 5675 |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5676 static void* add_stub(void) |
3465 | 5677 { |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5678 int i; |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5679 int found = 0; |
7386 | 5680 // generated code in runtime! |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5681 char* answ; |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5682 if (!extcode) |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5683 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
|
5684 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
|
5685 answ = extcode + pos * MAX_STUB_SIZE; |
21366
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5686 if (pos >= MAX_NUM_STUBS) { |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5687 printf("too many stubs, expect crash\n"); |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5688 return NULL; |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5689 } |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5690 memcpy(answ, ext_stubs, MAX_STUB_SIZE); |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5691 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
|
5692 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
|
5693 if (*magic == 0x0deadabc) { |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5694 *magic = pos; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5695 found |= 1; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5696 } |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5697 if (*magic == 0xdeadfbcd) { |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5698 *magic = (intptr_t)printf; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5699 found |= 2; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5700 } |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5701 } |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5702 if (found != 3) { |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5703 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
|
5704 return NULL; |
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5705 } |
3465 | 5706 pos++; |
5707 return (void*)answ; | |
5708 } | |
2069 | 5709 |
1 | 5710 void* LookupExternal(const char* library, int ordinal) |
5711 { | |
5712 int i,j; | |
5713 if(library==0) | |
5714 { | |
5715 printf("ERROR: library=0\n"); | |
5716 return (void*)ext_unknown; | |
5717 } | |
3465 | 5718 // printf("%x %x\n", &unk_exp1, &unk_exp2); |
1 | 5719 |
13379 | 5720 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
|
5721 |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5722 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
|
5723 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5724 if(strcasecmp(library, libraries[i].name)) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5725 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5726 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
|
5727 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5728 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
|
5729 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5730 //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
|
5731 return libraries[i].exps[j].func; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5732 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5733 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5734 |
9592
b20b0c80298b
Fix for truespeech dll, patch by <dimakar(at)yahoo.com>
rtognimp
parents:
9397
diff
changeset
|
5735 #ifndef LOADLIB_TRY_NATIVE |
9897 | 5736 /* hack for truespeech and vssh264*/ |
13748 | 5737 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
|
5738 #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
|
5739 /* 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
|
5740 { |
7386 | 5741 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
|
5742 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
|
5743 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
|
5744 |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5745 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
|
5746 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
|
5747 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
|
5748 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
|
5749 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
|
5750 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5751 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
|
5752 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
|
5753 } |
7386 | 5754 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
|
5755 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
|
5756 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5757 printf("No such ordinal in external dll\n"); |
7386 | 5758 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
|
5759 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
|
5760 } |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5761 |
7386 | 5762 printf("External dll loaded (offset: 0x%x, func: %p)\n", |
5763 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
|
5764 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
|
5765 } |
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 no_dll: |
1 | 5768 if(pos>150)return 0; |
30596
8806ec11a250
Use snprintf to ensure we do not write outside the buffer bounds
reimar
parents:
30503
diff
changeset
|
5769 snprintf(export_names[pos], sizeof(export_names[pos]), "%s:%d", library, ordinal); |
7386 | 5770 return add_stub(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5771 } |
1 | 5772 |
5773 void* LookupExternalByName(const char* library, const char* name) | |
5774 { | |
5775 int i,j; | |
3465 | 5776 // return (void*)ext_unknown; |
1 | 5777 if(library==0) |
5778 { | |
5779 printf("ERROR: library=0\n"); | |
5780 return (void*)ext_unknown; | |
5781 } | |
22476 | 5782 if((unsigned long)name<=0xffff) |
1 | 5783 { |
22476 | 5784 return LookupExternal(library, (int)name); |
1 | 5785 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5786 dbgprintf("External func %s:%s\n", library, name); |
1 | 5787 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) |
5788 { | |
5789 if(strcasecmp(library, libraries[i].name)) | |
5790 continue; | |
5791 for(j=0; j<libraries[i].length; j++) | |
5792 { | |
5793 if(strcmp(name, libraries[i].exps[j].name)) | |
5794 continue; | |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5795 if((unsigned int)(libraries[i].exps[j].func) == -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5796 return NULL; //undefined func |
3465 | 5797 // printf("Hit: 0x%08X\n", libraries[i].exps[j].func); |
1 | 5798 return libraries[i].exps[j].func; |
5799 } | |
5800 } | |
9897 | 5801 |
5802 #ifndef LOADLIB_TRY_NATIVE | |
5803 /* hack for vss h264 */ | |
22367
97639699240b
Update 3ivx decoder to latest version and allow it to load required library.
voroshil
parents:
21462
diff
changeset
|
5804 if (!strcmp(library,"vssh264core.dll") || !strcmp(library,"3ivx.dll")) |
9897 | 5805 #endif |
5806 /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ | |
5807 { | |
5808 int hand; | |
5809 WINE_MODREF *wm; | |
5810 void *func; | |
5811 | |
5812 hand = LoadLibraryA(library); | |
5813 if (!hand) | |
5814 goto no_dll_byname; | |
5815 wm = MODULE32_LookupHMODULE(hand); | |
5816 if (!wm) | |
5817 { | |
5818 FreeLibrary(hand); | |
5819 goto no_dll_byname; | |
5820 } | |
5821 func = PE_FindExportedFunction(wm, name, 0); | |
5822 if (!func) | |
5823 { | |
5824 printf("No such name in external dll\n"); | |
5825 FreeLibrary((int)hand); | |
5826 goto no_dll_byname; | |
5827 } | |
5828 | |
5829 printf("External dll loaded (offset: 0x%x, func: %p)\n", | |
5830 hand, func); | |
5831 return func; | |
5832 } | |
5833 | |
5834 no_dll_byname: | |
3465 | 5835 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
|
5836 snprintf(export_names[pos], sizeof(export_names[pos]), "%s", name); |
7386 | 5837 return add_stub(); |
1 | 5838 } |
5839 | |
2069 | 5840 void my_garbagecollection(void) |
128 | 5841 { |
5842 #ifdef GARBAGE | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5843 int unfree = 0, unfreecnt = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5844 |
7386 | 5845 int max_fatal = 8; |
3134 | 5846 free_registry(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5847 while (last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5848 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5849 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
|
5850 unfree += my_size(mem); |
3465 | 5851 unfreecnt++; |
7386 | 5852 if (my_release(mem) != 0) |
5853 // avoid endless loop when memory is trashed | |
5854 if (--max_fatal < 0) | |
5855 break; | |
128 | 5856 } |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
5857 dbgprintf("Total Unfree %d bytes cnt %d [%p,%d]\n",unfree, unfreecnt, last_alloc, alccnt); |
128 | 5858 #endif |
3134 | 5859 g_tls = NULL; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
5860 pthread_mutex_lock(&list_lock); |
3134 | 5861 list = NULL; |
30809
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
5862 pthread_mutex_unlock(&list_lock); |
d01c83dcb634
Make Win32 mutex and thread linked lists thread safe.
sesse
parents:
30806
diff
changeset
|
5863 } |