/[eiffelstudio]/trunk/Delivery/studio/config/windows/templates/egc_dynlib.template
ViewVC logotype

Diff of /trunk/Delivery/studio/config/windows/templates/egc_dynlib.template

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 60692 by manus, Fri Aug 1 00:58:53 2003 UTC revision 60693 by manus, Wed Jun 28 04:21:38 2006 UTC
# Line 5  Line 5 
5  #include "egc_dynlib.h"  #include "egc_dynlib.h"
6  #include "eif_sig.h"  #include "eif_sig.h"
7    
 static int is_rt_initialized = 0;  
 extern void egc_init_plug(void);  
   
8  RT_LNK HANDLE ghInstance;  RT_LNK HANDLE ghInstance;
9  RT_LNK HINSTANCE eif_hInstance;  RT_LNK HINSTANCE eif_hInstance;
10  RT_LNK HINSTANCE eif_hPrevInstance;  RT_LNK HINSTANCE eif_hPrevInstance;
11    
12    extern void egc_init_plug();
13    
14    void init_rt (void)
15    {
16    #ifdef EIF_THREADS
17            eif_thr_register();
18            initsig();
19            initstk();
20    #endif
21    }
22    
23  BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpvReserved)  BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpvReserved)
24  {  {
25          switch (ul_reason_for_call) {          switch (ul_reason_for_call) {
# Line 19  BOOL WINAPI DllMain (HANDLE hInst, ULONG Line 27  BOOL WINAPI DllMain (HANDLE hInst, ULONG
27                          ghInstance = hInst;                          ghInstance = hInst;
28                          eif_hInstance = hInst;                          eif_hInstance = hInst;
29                          eif_hPrevInstance = hInst;                          eif_hPrevInstance = hInst;
30                          init_rt();                          {
31                                    int argc = 1;
32                                    char *argv[] = {"",""};
33                                    
34                                    eif_alloc_init();
35                                    eif_thr_init_root ();
36                                    {
37                                            GTCX;
38                                            egc_init_plug();
39                                            initsig();
40                                            initstk();
41                                            eif_rtinit(argc, argv, (char **)0);  
42                                    }
43                            }
44                          break;                          break;
45                  case DLL_PROCESS_DETACH:                  case DLL_PROCESS_DETACH:
46                          reclaim_rt ();                          reclaim ();
47                          break;                          break;
48                  case DLL_THREAD_ATTACH:                  case DLL_THREAD_ATTACH:
49                            init_rt();
50                            break;
51                  case DLL_THREAD_DETACH:                  case DLL_THREAD_DETACH:
52                            eif_thr_exit();
53                          break;                          break;
54          }          }
55          return TRUE;          return TRUE;
56  }  }
   
 void init_rt (void)  
 {  
         struct ex_vect *exvect;  
         jmp_buf exenv;  
         int argc = 1;  
         char *argv[] = {"",""};  
           
         if (is_rt_initialized == 0) {  
                 is_rt_initialized = 1;  
                 eif_alloc_init();  
 #ifdef EIF_THREADS  
                 eif_thr_init_root ();  
 #endif  
                 {  
                         GTCX;  
                         egc_init_plug();  
                         initsig();  
                         initstk();  
                         exvect = exset((char *) 0, 0, (char *) 0);  
                         exvect->ex_jbuf = &exenv;  
                         if (setjmp(exenv))  
                                 failure();  
   
                         eif_rtinit(argc, argv, (char **)0);    
                         if (root_obj == (char *)0)  
                                 root_obj = cmalloc(1);  
                         }  
         }  
 }  
   
 void reclaim_rt (void)  
 {  
         if (is_rt_initialized == 1)  
         {  
                 reclaim();  
                 is_rt_initialized = 0;  
         }  
 }  
   
   

Legend:
Removed from v.60692  
changed lines
  Added in v.60693

  ViewVC Help
Powered by ViewVC 1.1.23