Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

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

revision 9546 by zmatsuo, Sat Nov 27 13:48:57 2021 UTC revision 9547 by zmatsuo, Sat Nov 27 13:49:15 2021 UTC
# Line 49  Line 49 
49  #include "compat_win.h"  #include "compat_win.h"
50  #include "asprintf.h"  #include "asprintf.h"
51    
52    #include "ttcmn_dup.h"
53    
54  #define DllExport __declspec(dllexport)  #define DllExport __declspec(dllexport)
55  #include "ttcommon.h"  #include "ttcommon.h"
56    
# Line 56  Line 58 
58  typedef struct {  typedef struct {
59          size_t size_tmap;               /* sizeof TMap */          size_t size_tmap;               /* sizeof TMap */
60          size_t size_tttset;             /* sizeof TTTSet */          size_t size_tttset;             /* sizeof TTTSet */
         /* Setup information from "teraterm.ini" */  
         TTTSet ts;  
61          // Window list          // Window list
62          int NWin;          int NWin;
63          HWND WinList[MAXNWIN];          HWND WinList[MAXNWIN];
# Line 71  typedef struct { Line 71  typedef struct {
71          WINDOWPLACEMENT WinPrevRect[MAXNWIN];          WINDOWPLACEMENT WinPrevRect[MAXNWIN];
72          BOOL WinUndoFlag;          BOOL WinUndoFlag;
73          int WinUndoStyle;          int WinUndoStyle;
74            // Duplicate Teraterm data
75            HANDLE DuplicateDataHandle;
76            DWORD DuplicateDataSizeLow;
77  } TMap;  } TMap;
78  typedef TMap *PMap;  typedef TMap *PMap;
79    
# Line 96  enum window_style { Line 99  enum window_style {
99          WIN_SIDEBYSIDE,          WIN_SIDEBYSIDE,
100  };  };
101    
102    static const char DupDataName[] = "dupdata";
103    
104  void WINAPI CopyShmemToTTSet(PTTSet ts)  void WINAPI CopyShmemToTTSet(PTTSet ts)
105  {  {
106          // 現在の設定を共有メモリからコピーする          DWORD size = pm->DuplicateDataSizeLow;
107          memcpy(ts, &pm->ts, sizeof(TTTSet));          HANDLE handle = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, size, DupDataName);
108            void *ptr = (void *)MapViewOfFile(handle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
109            TTCMNUnserialize(ptr, (size_t)size, ts);
110            UnmapViewOfFile(ptr);
111            CloseHandle(handle);
112            pm->DuplicateDataSizeLow = 0;
113  }  }
114    
115  void WINAPI CopyTTSetToShmem(PTTSet ts)  void WINAPI CopyTTSetToShmem(PTTSet ts)
116  {  {
117          // 現在の設定を共有メモリへコピーする          size_t size;
118          memcpy(&pm->ts, ts, sizeof(TTTSet));          void *ptr = TTCMNSerialize(ts, &size);
119            if (ptr != NULL) {
120                    HANDLE handle = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, (DWORD)size, DupDataName);
121                    void *dest = (void *)MapViewOfFile(handle, FILE_MAP_ALL_ACCESS,0,0,0);
122                    memcpy(dest, ptr, size);
123                    UnmapViewOfFile(dest);
124                    //CloseHandle(handle);  do not close, 使用しない状態になるとなくなってしまう
125    
126                    if (pm->DuplicateDataHandle != NULL) {
127                            // 1回前の情報を削除する
128                            CloseHandle(pm->DuplicateDataHandle);
129                    }
130                    pm->DuplicateDataHandle = handle;
131                    pm->DuplicateDataSizeLow = (DWORD)size;
132                    free(ptr);
133            }
134  }  }
135    
136  static void CopyFiles(const wchar_t *file_list[], const wchar_t *src_dir, const wchar_t *dest_dir)  static void CopyFiles(const wchar_t *file_list[], const wchar_t *src_dir, const wchar_t *dest_dir)
# Line 146  BOOL WINAPI StartTeraTerm(PTTSet ts) Line 170  BOOL WINAPI StartTeraTerm(PTTSet ts)
170          }          }
171          else {          else {
172                  /* only the first instance uses saved position */                  /* only the first instance uses saved position */
173                  pm->ts.VTPos.x = CW_USEDEFAULT;                  ts->VTPos.x = CW_USEDEFAULT;
174                  pm->ts.VTPos.y = CW_USEDEFAULT;                  ts->VTPos.y = CW_USEDEFAULT;
175                  pm->ts.TEKPos.x = CW_USEDEFAULT;                  ts->TEKPos.x = CW_USEDEFAULT;
176                  pm->ts.TEKPos.y = CW_USEDEFAULT;                  ts->TEKPos.y = CW_USEDEFAULT;
177          }          }
178    
         memcpy(ts,&(pm->ts),sizeof(TTTSet));  
   
179          // if (FirstInstance) { の部分から移動 (2008.3.13 maya)          // if (FirstInstance) { の部分から移動 (2008.3.13 maya)
180          // 起動時には、共有メモリの HomeDir と SetupFName は空になる          // 起動時には、共有メモリの HomeDir と SetupFName は空になる
181          /* Get home directory (ttermpro.exeのフォルダ) */          /* Get home directory (ttermpro.exeのフォルダ) */

Legend:
Removed from v.9546  
changed lines
  Added in v.9547

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26