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