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