[commit] r1509 - trunk/GME/Gme
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Wed Sep 7 16:44:54 CDT 2011
Author: ksmyth
Date: Wed Sep 7 16:44:54 2011
New Revision: 1509
Log:
Cut the Gordian WM_CLOSE, ExitInstance, SaveAllModified knot. Fixes C# interpreters not Release()ing IGMEOLEApp, GME-298
Modified:
trunk/GME/Gme/GMEApp.cpp
trunk/GME/Gme/GMEApp.h
Modified: trunk/GME/Gme/GMEApp.cpp
==============================================================================
--- trunk/GME/Gme/GMEApp.cpp Wed Sep 7 11:08:40 2011 (r1508)
+++ trunk/GME/Gme/GMEApp.cpp Wed Sep 7 16:44:54 2011 (r1509)
@@ -1747,6 +1747,17 @@
#define PROJECT_STATUS_CHANGED 4
+void CGMEApp::OnAppExit()
+{
+ if (SaveAllModified())
+ {
+ // n.b. C# interpreters may not Release() IGMEOLEApp, which keeps us ::Run()ing forever
+ // TerminateProcess will be unpleasant for DCOM (but the user asked for it)
+ TerminateProcess(GetCurrentProcess(), 0);
+ }
+ // n.b. don't call CWinAppEx::OnAppExit
+}
+
BOOL CGMEApp::SaveAllModified()
{
if (mgaProject != NULL && (proj_type_is_mga || proj_type_is_xmlbackend)) {
@@ -1754,7 +1765,7 @@
long l;
COMTHROW(mgaProject->get_ProjectStatus(&l));
if (IsUndoPossible() && (l & PROJECT_STATUS_CHANGED))
- ret = AfxMessageBox(_T("Save project '") + projectName + _T("'?"), MB_YESNO);
+ ret = AfxMessageBox(_T("Save project '") + projectName + _T("'?"), MB_YESNOCANCEL);
if (ret == IDCANCEL) {
return FALSE;
} else if (ret == IDNO) {
Modified: trunk/GME/Gme/GMEApp.h
==============================================================================
--- trunk/GME/Gme/GMEApp.h Wed Sep 7 11:08:40 2011 (r1508)
+++ trunk/GME/Gme/GMEApp.h Wed Sep 7 16:44:54 2011 (r1509)
@@ -179,6 +179,7 @@
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
+ virtual void OnAppExit();
virtual BOOL SaveAllModified();
//}}AFX_VIRTUAL
More information about the gme-commit
mailing list