Commit cc261b9f authored by scullin%netscape.com's avatar scullin%netscape.com
Browse files

Ref count fixes, fix widget test app.

parent f018e070
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -58,6 +58,7 @@ CPPSRCS= \
	nsWidgetFactory.cpp \
	nsWidgetFactory.cpp \
	nsWindow.cpp \
	nsWindow.cpp \
	nsXtEventHandler.cpp \
	nsXtEventHandler.cpp \
	nsLookAndFeel.cpp \
	nsToolkit.cpp
	nsToolkit.cpp


CPP_OBJS=				\
CPP_OBJS=				\
+1 −0
Original line number Original line Diff line number Diff line
@@ -89,6 +89,7 @@ void nsAppShell::Exit()
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
nsAppShell::nsAppShell()
nsAppShell::nsAppShell()
{ 
{ 
  mRefCnt = 0;
  mDispatchListener = 0;
  mDispatchListener = 0;
}
}


+34 −27
Original line number Original line Diff line number Diff line
@@ -34,10 +34,11 @@
#include "nsFileWidget.h"
#include "nsFileWidget.h"
#include "nsListBox.h"
#include "nsListBox.h"
#include "nsComboBox.h"
#include "nsComboBox.h"
#include "nsLookAndFeel.h"


static NS_DEFINE_IID(kCWindow,        NS_WINDOW_CID);
static NS_DEFINE_IID(kCWindow,        NS_WINDOW_CID);
static NS_DEFINE_IID(kCChild,         NS_CHILD_CID);
static NS_DEFINE_IID(kCChild,         NS_CHILD_CID);
static NS_DEFINE_IID(kCAppShell,      NS_APPSHELL_CID);
static NS_DEFINE_IID(kCAppShellCID,      NS_APPSHELL_CID);
static NS_DEFINE_IID(kCHorzScrollbarCID, NS_HORZSCROLLBAR_CID);
static NS_DEFINE_IID(kCHorzScrollbarCID, NS_HORZSCROLLBAR_CID);
static NS_DEFINE_IID(kCVertScrollbarCID, NS_VERTSCROLLBAR_CID);
static NS_DEFINE_IID(kCVertScrollbarCID, NS_VERTSCROLLBAR_CID);
static NS_DEFINE_IID(kCCheckButtonCID, NS_CHECKBUTTON_CID);
static NS_DEFINE_IID(kCCheckButtonCID, NS_CHECKBUTTON_CID);
@@ -48,6 +49,7 @@ static NS_DEFINE_IID(kCFileWidgetCID, NS_FILEWIDGET_CID);
static NS_DEFINE_IID(kCButtonCID,     NS_BUTTON_CID);
static NS_DEFINE_IID(kCButtonCID,     NS_BUTTON_CID);
static NS_DEFINE_IID(kCListBoxCID,    NS_LISTBOX_CID);
static NS_DEFINE_IID(kCListBoxCID,    NS_LISTBOX_CID);
static NS_DEFINE_IID(kCComboBoxCID,    NS_COMBOBOX_CID);
static NS_DEFINE_IID(kCComboBoxCID,    NS_COMBOBOX_CID);
static NS_DEFINE_IID(kCLookAndFeelCID, NS_LOOKANDFEEL_CID);




static NS_DEFINE_IID(kIWidget,        NS_IWIDGET_IID);
static NS_DEFINE_IID(kIWidget,        NS_IWIDGET_IID);
@@ -177,9 +179,19 @@ nsresult nsWidgetFactory::CreateInstance(nsISupports *aOuter,
    else if (mClassID.Equals(kCChild)) {
    else if (mClassID.Equals(kCChild)) {
        inst = new ChildWindow(aOuter);
        inst = new ChildWindow(aOuter);
    }
    }

    else if (mClassID.Equals(kCLookAndFeelCID)) {
    else if (aIID.Equals(kIAppShellIID)) {
        nsLookAndFeel *laf = new nsLookAndFeel(aOuter);
      nsIAppShell *appInst = (nsIAppShell*)new nsAppShell();
        if (laf == NULL) {  
            return NS_ERROR_OUT_OF_MEMORY;  
        }  
        nsresult res = laf->QueryInterface(aIID, aResult);
        if (res != NS_OK) {
            delete laf;
        }
        return res;
    }
    else if (mClassID.Equals(kCAppShellCID)) {
        nsAppShell *appInst = new nsAppShell();
        if (appInst == NULL) {  
        if (appInst == NULL) {  
            return NS_ERROR_OUT_OF_MEMORY;  
            return NS_ERROR_OUT_OF_MEMORY;  
        }  
        }  
@@ -194,16 +206,11 @@ nsresult nsWidgetFactory::CreateInstance(nsISupports *aOuter,
        return NS_ERROR_OUT_OF_MEMORY;  
        return NS_ERROR_OUT_OF_MEMORY;  
    }
    }
        
        

    nsresult res = inst->QueryObject(aIID, aResult);
    nsresult res = inst->QueryObject(aIID, aResult);


    if (res != NS_OK) {
    if (res != NS_OK) {
         delete inst;         
         delete inst;         
    }
    }
  else {
    NS_RELEASE(inst);
  }

    return res;
    return res;
}  
}  


+16 −10
Original line number Original line Diff line number Diff line
@@ -188,7 +188,7 @@ nsWindow::nsWindow(nsISupports *aOuter):
    mOuter = aOuter;
    mOuter = aOuter;
  else
  else
    mOuter = &mInner;
    mOuter = &mInner;
  mRefCnt = 1; 
  mRefCnt = 0; 


  mGC = nsnull ;
  mGC = nsnull ;
  mShown = PR_FALSE;
  mShown = PR_FALSE;
@@ -928,12 +928,18 @@ void* nsWindow::GetNativeData(PRUint32 aDataType)
    case NS_NATIVE_WIDGET:
    case NS_NATIVE_WIDGET:
      return (void*)(mWidget);
      return (void*)(mWidget);
    case NS_NATIVE_GRAPHIC:
    case NS_NATIVE_GRAPHIC:
      {
        void *res = NULL;
        // We Cache a Read-Only Shared GC in the Toolkit.  If we don't
        // We Cache a Read-Only Shared GC in the Toolkit.  If we don't
        // have one ourselves (because it needs to be writeable) grab the
        // have one ourselves (because it needs to be writeable) grab the
        // the shared GC
        // the shared GC
        if (nsnull == mGC)
        if (nsnull == mGC)
        return (((nsToolkit *)mToolkit)->GetSharedGC());
          res = (void *)((nsToolkit *)mToolkit)->GetSharedGC(); 
      return ((void*)mGC);
        else
          res = (void *)mGC;
        NS_ASSERTION(res, "Unable to return GC");
        return res;
      }
    case NS_NATIVE_COLORMAP:
    case NS_NATIVE_COLORMAP:
    default:
    default:
      break;
      break;
+1 −1
Original line number Original line Diff line number Diff line
@@ -98,7 +98,7 @@ $(OBJDIR)/%.o: %.cpp
	@$(MAKE_OBJDIR)
	@$(MAKE_OBJDIR)
	$(CCC) -o $@ $(CFLAGS) -c $*.cpp
	$(CCC) -o $@ $(CFLAGS) -c $*.cpp


$(OBJDIR)/$(PROG): $(EX_LIBS)
$(OBJDIR)/$(PROG): $(EX_LIBS) $(OBJDIR)/main.o $(OBJDIR)/nsWidgetTest.o
	@$(MAKE_OBJDIR)
	@$(MAKE_OBJDIR)
ifeq ($(OS_ARCH),Linux)
ifeq ($(OS_ARCH),Linux)
	$(CCC) -rdynamic -o $@ $(OBJDIR)/main.o $(OBJDIR)/nsWidgetTest.o $(LDFLAGS) $(EX_LIBS) $(OS_LIBS) -L/usr/X11R6/lib -lXm -lXt -lX11 -lXp -lXext
	$(CCC) -rdynamic -o $@ $(OBJDIR)/main.o $(OBJDIR)/nsWidgetTest.o $(LDFLAGS) $(EX_LIBS) $(OS_LIBS) -L/usr/X11R6/lib -lXm -lXt -lX11 -lXp -lXext
Loading