From 0a8feabc0d6db32dbd6ea7df385cf861f4e1ab22 Mon Sep 17 00:00:00 2001 From: "svn%xmlterm.org" Date: Tue, 10 Oct 2000 04:51:11 +0000 Subject: [PATCH] --NOT PART OF DEFAULT BUILD-- XMLterm changes only. Some code cleanup for Finalize methods. git-svn-id: svn://10.0.0.236/trunk@80818 18797224-902f-48f8-a5cc-f745e15eee43 --- .../extensions/xmlterm/base/mozLineTerm.cpp | 4 ++++ .../xmlterm/base/mozXMLTermSession.cpp | 17 +++++++++------ .../xmlterm/base/mozXMLTermShell.cpp | 13 ++++++++---- .../xmlterm/base/mozXMLTerminal.cpp | 21 ++++++++++++------- 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/mozilla/extensions/xmlterm/base/mozLineTerm.cpp b/mozilla/extensions/xmlterm/base/mozLineTerm.cpp index 586b3bff21f..b8a687e3364 100644 --- a/mozilla/extensions/xmlterm/base/mozLineTerm.cpp +++ b/mozilla/extensions/xmlterm/base/mozLineTerm.cpp @@ -456,6 +456,8 @@ NS_IMETHODIMP mozLineTerm::SuspendAux(PRBool aSuspend) */ NS_IMETHODIMP mozLineTerm::Close(const PRUnichar* aCookie) { + XMLT_LOG(mozLineTerm::Close,20, ("\n")); + if (!mCookie.EqualsWithConversion(aCookie)) { XMLT_ERROR("mozLineTerm::Close: Error - Cookie mismatch\n"); return NS_ERROR_FAILURE; @@ -481,6 +483,8 @@ NS_IMETHODIMP mozLineTerm::Close(const PRUnichar* aCookie) */ NS_IMETHODIMP mozLineTerm::CloseAux(void) { + XMLT_LOG(mozLineTerm::CloseAux,20, ("\n")); + if (lterm_close(mLTerm) == 0) { return NS_OK; } else { diff --git a/mozilla/extensions/xmlterm/base/mozXMLTermSession.cpp b/mozilla/extensions/xmlterm/base/mozXMLTermSession.cpp index cb17c2ded4d..3a3b49f7ba2 100644 --- a/mozilla/extensions/xmlterm/base/mozXMLTermSession.cpp +++ b/mozilla/extensions/xmlterm/base/mozXMLTermSession.cpp @@ -167,9 +167,7 @@ mozXMLTermSession::mozXMLTermSession() : mozXMLTermSession::~mozXMLTermSession() { - if (mInitialized) { - Finalize(); - } + Finalize(); } @@ -191,6 +189,8 @@ NS_IMETHODIMP mozXMLTermSession::Init(mozIXMLTerminal* aXMLTerminal, mPresShell = aPresShell; // presentation shell; no addref mDOMDocument = aDOMDocument; // DOM document; no addref + mInitialized = PR_TRUE; + mScreenRows = nRows; mScreenCols = nCols; mTopScrollRow = mScreenRows - 1; @@ -247,8 +247,6 @@ NS_IMETHODIMP mozXMLTermSession::Init(mozIXMLTerminal* aXMLTerminal, result = AppendOutput(prefaceText, nullStyle, PR_TRUE); #endif - mInitialized = PR_TRUE; - XMLT_LOG(mozXMLTermSession::Init,31,("exiting\n")); return result; } @@ -258,6 +256,13 @@ NS_IMETHODIMP mozXMLTermSession::Init(mozIXMLTerminal* aXMLTerminal, NS_IMETHODIMP mozXMLTermSession::Finalize(void) { + if (!mInitialized) + return NS_OK; + + XMLT_LOG(mozXMLTermSession::Finalize,30,("\n")); + + mInitialized = PR_FALSE; + mScreenNode = nsnull; mOutputBlockNode = nsnull; @@ -281,7 +286,7 @@ NS_IMETHODIMP mozXMLTermSession::Finalize(void) mPresShell = nsnull; mDOMDocument = nsnull; - mInitialized = PR_FALSE; + XMLT_LOG(mozXMLTermSession::Finalize,32,("END\n")); return NS_OK; } diff --git a/mozilla/extensions/xmlterm/base/mozXMLTermShell.cpp b/mozilla/extensions/xmlterm/base/mozXMLTermShell.cpp index 1251a01bdda..79dd56c1c8f 100644 --- a/mozilla/extensions/xmlterm/base/mozXMLTermShell.cpp +++ b/mozilla/extensions/xmlterm/base/mozXMLTermShell.cpp @@ -93,9 +93,7 @@ mozXMLTermShell::mozXMLTermShell() : mozXMLTermShell::~mozXMLTermShell() { - if (mInitialized) { - Finalize(); - } + Finalize(); } @@ -224,6 +222,8 @@ mozXMLTermShell::Init(nsIDOMWindowInternal* aContentWin, if (!aContentWin) return NS_ERROR_NULL_POINTER; + mInitialized = PR_TRUE; + mContentWindow = aContentWin; // no addref nsCOMPtr globalObj = do_QueryInterface(mContentWindow, @@ -284,8 +284,13 @@ mozXMLTermShell::Close(const PRUnichar* aCookie) NS_IMETHODIMP mozXMLTermShell::Finalize(void) { + if (!mInitialized) + return NS_OK; + XMLT_LOG(mozXMLTermShell::Finalize,10,("\n")); + mInitialized = PR_FALSE; + if (mXMLTerminal) { // Finalize and release reference to XMLTerm object owned by us mXMLTerminal->Finalize(); @@ -295,7 +300,7 @@ mozXMLTermShell::Finalize(void) mContentAreaDocShell = nsnull; mContentWindow = nsnull; - mInitialized = PR_FALSE; + XMLT_LOG(mozXMLTermShell::Finalize,12,("END\n")); return NS_OK; } diff --git a/mozilla/extensions/xmlterm/base/mozXMLTerminal.cpp b/mozilla/extensions/xmlterm/base/mozXMLTerminal.cpp index 8904bde27a9..f9b7db4734a 100644 --- a/mozilla/extensions/xmlterm/base/mozXMLTerminal.cpp +++ b/mozilla/extensions/xmlterm/base/mozXMLTerminal.cpp @@ -126,9 +126,7 @@ mozXMLTerminal::mozXMLTerminal() : mozXMLTerminal::~mozXMLTerminal() { - if (mInitialized) { - Finalize(); - } + Finalize(); } @@ -232,9 +230,12 @@ NS_IMETHODIMP mozXMLTerminal::Init(nsIDocShell* aDocShell, if (!aDocShell) return NS_ERROR_NULL_POINTER; - if (mDocShell) + if (mInitialized) return NS_ERROR_ALREADY_INITIALIZED; + // Initialization flag + mInitialized = PR_TRUE; + mDocShell = aDocShell; // containing docshell; no addref mXMLTermShell = aXMLTermShell; // containing xmlterm shell; no addref @@ -252,9 +253,6 @@ NS_IMETHODIMP mozXMLTerminal::Init(nsIDocShell* aDocShell, mPromptExpr.SetLength(0); mInitInput = args; - // Initialization completed - mInitialized = PR_TRUE; - if ((aURL != nsnull) && (*aURL != 0)) { // Load URL and activate XMLTerm after loading XMLT_LOG(mozXMLTerminal::Init,22,("setting DocLoaderObs\n")); @@ -294,6 +292,13 @@ NS_IMETHODIMP mozXMLTerminal::Init(nsIDocShell* aDocShell, // De-initialize XMLTerminal NS_IMETHODIMP mozXMLTerminal::Finalize(void) { + if (!mInitialized) + return NS_OK; + + XMLT_LOG(mozXMLTerminal::Finalize,20,("\n")); + + mInitialized = PR_FALSE; + if (mXMLTermSession) { // Finalize XMLTermSession object and delete it (it is not ref. counted) mXMLTermSession->Finalize(); @@ -349,7 +354,7 @@ NS_IMETHODIMP mozXMLTerminal::Finalize(void) mPresShell = nsnull; mXMLTermShell = nsnull; - mInitialized = PR_FALSE; + XMLT_LOG(mozXMLTerminal::Finalize,22,("END\n")); return NS_OK; }