From 76f8a596b0af5b29a2dc468d41dfd5f502dcd32f Mon Sep 17 00:00:00 2001 From: "cls%seawood.org" Date: Wed, 25 Jul 2001 02:22:54 +0000 Subject: [PATCH] Adding startup splash screen support for BeOS. Moving BApplication creation from libwidget_beos.so to main Mozilla app. Thanks to Takashi Toyoshima for the patch. Bug #65425 r=Makoto Hamanaka git-svn-id: svn://10.0.0.236/trunk@99862 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/widget/src/beos/nsAppShell.cpp | 65 +---- mozilla/xpfe/bootstrap/Makefile.in | 2 + mozilla/xpfe/bootstrap/apprunner-beos.rsrc | Bin 2863 -> 411563 bytes mozilla/xpfe/bootstrap/nsAppRunner.cpp | 81 +++++- .../xpfe/bootstrap/nsNativeAppSupportBeOS.cpp | 269 ++++++++++++++++++ 5 files changed, 352 insertions(+), 65 deletions(-) create mode 100644 mozilla/xpfe/bootstrap/nsNativeAppSupportBeOS.cpp diff --git a/mozilla/widget/src/beos/nsAppShell.cpp b/mozilla/widget/src/beos/nsAppShell.cpp index d3f83b0c8af..5eed84fa001 100644 --- a/mozilla/widget/src/beos/nsAppShell.cpp +++ b/mozilla/widget/src/beos/nsAppShell.cpp @@ -35,9 +35,8 @@ #include "prprf.h" #include "nsGUIEvent.h" +#include #include -#include -#include static int gBAppCount = 0; @@ -82,60 +81,6 @@ NS_DEFINE_IID(kIAppShellIID, NS_IAPPSHELL_IID); NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); NS_IMPL_ISUPPORTS(nsAppShell,kIAppShellIID); -static bool GetAppSig(char *sig) -{ - app_info appInfo; - BFile file; - BAppFileInfo appFileInfo; - image_info info; - int32 cookie = 0; - - *sig = 0; - return get_next_image_info(0, &cookie, &info) == B_OK && - file.SetTo(info.name, B_READ_ONLY) == B_OK && - appFileInfo.SetTo(&file) == B_OK && - appFileInfo.GetSignature(sig) == B_OK; -} - -class nsBeOSApp : public BApplication -{ - public: - sem_id init; - - nsBeOSApp(const char *signature, sem_id initsem); - virtual void ReadyToRun(void); -}; - -nsBeOSApp::nsBeOSApp(const char *signature, sem_id initsem) - : BApplication(signature), init(initsem) -{ -} - -void nsBeOSApp::ReadyToRun(void) -{ - release_sem(init); -} - -// Return B_OK for success, anything else error! -int32 bapp_thread(void *arg) -{ - // create and start BApplication - char sig[B_MIME_TYPE_LENGTH + 1]; - int32 error = B_OK; - - GetAppSig(sig); - nsBeOSApp *app = new nsBeOSApp(sig, (sem_id)arg); - if(app) - { - app->Run(); - } - else - { - error = B_NO_MEMORY; - } - return error; -} - //------------------------------------------------------------------------- // // nsAppShell constructor @@ -147,13 +92,7 @@ nsAppShell::nsAppShell() NS_INIT_REFCNT(); mDispatchListener = 0; - if(gBAppCount++ == 0) - { - sem_id initsem = create_sem(0, "bapp init"); - resume_thread(spawn_thread(bapp_thread, "BApplication", B_NORMAL_PRIORITY, (void *)initsem)); - acquire_sem(initsem); - delete_sem(initsem); - } + gBAppCount++; } diff --git a/mozilla/xpfe/bootstrap/Makefile.in b/mozilla/xpfe/bootstrap/Makefile.in index 1906283238c..6d2b502cfeb 100644 --- a/mozilla/xpfe/bootstrap/Makefile.in +++ b/mozilla/xpfe/bootstrap/Makefile.in @@ -151,6 +151,8 @@ endif ifeq ($(MOZ_WIDGET_TOOLKIT),beos) BEOS_PROGRAM_RESOURCE = $(srcdir)/apprunner-beos.rsrc +CPPSRCS += nsNativeAppSupportBeOS.cpp +CPPSRCS += nsNativeAppSupportBase.cpp endif ifeq ($(MOZ_WIDGET_TOOLKIT),photon) diff --git a/mozilla/xpfe/bootstrap/apprunner-beos.rsrc b/mozilla/xpfe/bootstrap/apprunner-beos.rsrc index d0b0067e02da95a69b4cca59fee9ad70135e8060..3e2c9048b10825d5d2e893b7fc2542dc5461a814 100644 GIT binary patch literal 411563 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 d?+?`F9Gb|v$5hTkzJ;9w#O_c@6UQ&tyQ Hfoul=DIF;Q diff --git a/mozilla/xpfe/bootstrap/nsAppRunner.cpp b/mozilla/xpfe/bootstrap/nsAppRunner.cpp index f32d6d807ef..95620e685e0 100644 --- a/mozilla/xpfe/bootstrap/nsAppRunner.cpp +++ b/mozilla/xpfe/bootstrap/nsAppRunner.cpp @@ -125,6 +125,78 @@ apprunner_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count); extern void InstallUnixSignalHandlers(const char *ProgramName); #endif +#if defined(XP_BEOS) + +#include +#include + +class nsBeOSApp : public BApplication +{ +public: + nsBeOSApp(sem_id sem) + : BApplication(GetAppSig()), init(sem) + { + } + + void ReadyToRun(void) + { + release_sem(init); + } + + static int32 Main(void *args) + { + nsBeOSApp *app = new nsBeOSApp((sem_id)args); + if (NULL == app) + return B_ERROR; + return app->Run(); + } + +private: + char *GetAppSig(void) + { + app_info appInfo; + BFile file; + BAppFileInfo appFileInfo; + image_info info; + int32 cookie = 0; + static char sig[B_MIME_TYPE_LENGTH]; + + sig[0] = 0; + if (get_next_image_info(0, &cookie, &info) != B_OK || + file.SetTo(info.name, B_READ_ONLY) != B_OK || + appFileInfo.SetTo(&file) != B_OK || + appFileInfo.GetSignature(sig) != B_OK) + { + return "application/x-vnd.mozilla.apprunner"; + } + return sig; + } + + sem_id init; +}; + +static nsresult InitializeBeOSApp(void) +{ + nsresult rv = NS_OK; + + sem_id initsem = create_sem(0, "beapp init"); + if (initsem < B_OK) + return NS_ERROR_FAILURE; + + thread_id tid = spawn_thread(nsBeOSApp::Main, "BApplication", B_NORMAL_PRIORITY, (void *)initsem); + if (tid < B_OK || B_OK != resume_thread(tid)) + rv = NS_ERROR_FAILURE; + + if (B_OK != acquire_sem(initsem)) + rv = NS_ERROR_FAILURE; + if (B_OK != delete_sem(initsem)) + rv = NS_ERROR_FAILURE; + + return rv; +} + +#endif // XP_BEOS + #if defined(XP_MAC) #include "macstdlibextras.h" @@ -172,7 +244,7 @@ static char *sWatcherServiceContractID = "@mozilla.org/embedcomp/window-watcher; /*********************************************/ // Default implemenations for nativeAppSupport // If your platform implements these functions if def out this code. -#if !defined (XP_MAC ) && !defined(NTO) && !defined( XP_PC ) +#if !defined (XP_MAC ) && !defined(NTO) && !defined( XP_PC ) && !defined( XP_BEOS ) nsresult NS_CreateSplashScreen( nsISplashScreen **aResult ) { @@ -206,7 +278,7 @@ PRBool NS_CanRun() // then rely on nsINativeAppSupport and its use of // nsISplashScreen will be removed. // -#if !defined( XP_PC ) +#if !defined( XP_PC ) && !defined( XP_BEOS ) nsresult NS_CreateNativeAppSupport( nsINativeAppSupport **aResult ) { @@ -1445,6 +1517,11 @@ int main(int argc, char* argv[]) InstallUnixSignalHandlers(argv[0]); #endif +#if defined(XP_BEOS) + if (NS_OK != InitializeBeOSApp()) + return 1; +#endif + // Handle -help and -version command line arguments. // They should% return quick, so we deal with them here. if (HandleDumpArguments(argc, argv)) diff --git a/mozilla/xpfe/bootstrap/nsNativeAppSupportBeOS.cpp b/mozilla/xpfe/bootstrap/nsNativeAppSupportBeOS.cpp new file mode 100644 index 00000000000..40c41430d1a --- /dev/null +++ b/mozilla/xpfe/bootstrap/nsNativeAppSupportBeOS.cpp @@ -0,0 +1,269 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Takashi Toyoshima + */ +#include "nsNativeAppSupportBase.h" +#include "nsString.h" +#include "nsICmdLineService.h" +#include "nsCOMPtr.h" +#include "nsXPIDLString.h" +#include "nsIComponentManager.h" +#include "nsIServiceManager.h" +#include "nsIAppShellService.h" +#include "nsAppShellCIDs.h" +#include "nsIDOMWindowInternal.h" + +#include +#include +#include +#include +#include +#include + +#ifdef DEBUG +#define DEBUG_SPLASH 1 +#endif + +class nsSplashScreenBeOS : public nsISplashScreen { +public: + nsSplashScreenBeOS(); + ~nsSplashScreenBeOS(); + + NS_IMETHOD Show(); + NS_IMETHOD Hide(); + + // nsISupports methods + NS_IMETHOD_(nsrefcnt) AddRef() { + mRefCnt++; + return mRefCnt; + } + NS_IMETHOD_(nsrefcnt) Release() { + --mRefCnt; + if ( !mRefCnt ) { + delete this; + return 0; + } + return mRefCnt; + } + NS_IMETHOD QueryInterface( const nsIID &iid, void**p ) { + nsresult rv = NS_OK; + if ( p ) { + *p = 0; + if ( iid.Equals( NS_GET_IID( nsISplashScreen ) ) ) { + nsISplashScreen *result = this; + *p = result; + NS_ADDREF( result ); + } else if ( iid.Equals( NS_GET_IID( nsISupports ) ) ) { + nsISupports *result = NS_STATIC_CAST( nsISupports*, this ); + *p = result; + NS_ADDREF( result ); + } else { + rv = NS_NOINTERFACE; + } + } else { + rv = NS_ERROR_NULL_POINTER; + } + return rv; + } + +private: + nsresult LoadBitmap(); + + nsrefcnt mRefCnt; + BWindow *window; + BBitmap *bitmap; +}; // class nsSplashScreenBeOS + +class nsNativeAppSupportBeOS : public nsNativeAppSupportBase { +public: + // Overrides of base implementation. + NS_IMETHOD Start( PRBool *aResult ); + NS_IMETHOD Stop( PRBool *aResult ); + NS_IMETHOD Quit(); + +private: + nsrefcnt mRefCnt; +}; // nsNativeAppSupportBeOS + +nsSplashScreenBeOS::nsSplashScreenBeOS() + : mRefCnt( 0 ) , window( NULL ) , bitmap( NULL ) { +#ifdef DEBUG_SPLASH + puts("nsSplashScreenBeOS::nsSlpashScreenBeOS()"); +#endif +} + +nsSplashScreenBeOS::~nsSplashScreenBeOS() { +#ifdef DEBUG_SPLASH + puts("nsSplashScreenBeOS::~nsSlpashScreenBeOS()"); +#endif + Hide(); +} + +NS_IMETHODIMP +nsSplashScreenBeOS::Show() { +#ifdef DEBUG_SPLASH + puts("nsSplashScreenBeOS::Show()"); +#endif + if (NULL == bitmap && NS_OK != LoadBitmap()) + return NS_ERROR_FAILURE; + + // Get the center position. + BScreen scr; + BRect scrRect = scr.Frame(); + BRect bmpRect = bitmap->Bounds(); + float winX = (scrRect.right - bmpRect.right) / 2; + float winY = (scrRect.bottom - bmpRect.bottom) / 2; + BRect winRect(winX, winY, winX + bmpRect.right, winY + bmpRect.bottom); +#ifdef DEBUG_SPLASH + printf("SplashRect (%f, %f) - (%f, %f)\n", winRect.left, winRect.top, + winRect.right, winRect.bottom); +#endif + if (NULL == window) { + window = new BWindow(winRect, + "mozilla splash", + B_NO_BORDER_WINDOW_LOOK, + B_MODAL_APP_WINDOW_FEEL, + 0); + if (NULL == window) + return NS_ERROR_FAILURE; + BView *view = new BView(bmpRect, "splash view", B_FOLLOW_ALL_SIDES, B_WILL_DRAW); + if (NULL != view) { + window->AddChild(view); + view->SetViewBitmap(bitmap); + } + window->Show(); + } + return NS_OK; +} + +NS_IMETHODIMP +nsSplashScreenBeOS::Hide() { +#ifdef DEBUG_SPLASH + puts("nsSplashScreenBeOS::Hide()"); +#endif + if (NULL != window) { + if (window->Lock()) + window->Quit(); + window = NULL; + } + if (NULL != bitmap) { + delete bitmap; + bitmap = NULL; + } + return NS_OK; +} + +nsresult +nsSplashScreenBeOS::LoadBitmap() { + BResources *rsrc = be_app->AppResources(); + if (NULL == rsrc) + return NS_ERROR_FAILURE; + size_t length; + const void *data = rsrc->LoadResource('BBMP', "MOZILLA:SPLASH", &length); + if (NULL == data) + return NS_ERROR_FAILURE; + BMessage msg; + if (B_OK != msg.Unflatten((const char *)data)) + return NS_ERROR_FAILURE; + BBitmap *bmp = new BBitmap(&msg); + if (NULL == bmp) + return NS_ERROR_FAILURE; + bitmap = new BBitmap(bmp, true); + if (NULL == bitmap) { + delete bmp; + return NS_ERROR_FAILURE; + } + return NS_OK; +} + +// Create and return an instance of class nsNativeAppSupportBeOS. +nsresult +NS_CreateNativeAppSupport( nsINativeAppSupport **aResult ) { + if ( aResult ) { + *aResult = new nsNativeAppSupportBeOS(); + if ( *aResult ) { + NS_ADDREF( *aResult ); + } else { + return NS_ERROR_OUT_OF_MEMORY; + } + } else { + return NS_ERROR_NULL_POINTER; + } + return NS_OK; +} + +// Create instance of BeOS splash screen object. +nsresult +NS_CreateSplashScreen( nsISplashScreen **aResult ) { + if ( aResult ) { + *aResult = new nsSplashScreenBeOS; + if ( *aResult ) { + NS_ADDREF( *aResult ); + } else { + return NS_ERROR_OUT_OF_MEMORY; + } + } else { + return NS_ERROR_NULL_POINTER; + } + + return NS_OK; +} + +NS_IMETHODIMP +nsNativeAppSupportBeOS::Start( PRBool *aResult ) { + NS_ENSURE_ARG( aResult ); + + nsresult rv = NS_OK; +#ifdef DEBUG_SPLASH + puts("nsNativeAppSupportBeOS::Start()"); +#endif + *aResult = PR_TRUE; + + return rv; +} + +NS_IMETHODIMP +nsNativeAppSupportBeOS::Stop( PRBool *aResult ) { + NS_ENSURE_ARG( aResult ); + + nsresult rv = NS_OK; +#ifdef DEBUG_SPLASH + puts("nsNativeAppSupportBeOS::Stop()"); +#endif + *aResult = PR_TRUE; + + return rv; +} + +NS_IMETHODIMP +nsNativeAppSupportBeOS::Quit() { +#ifdef DEBUG_SPLASH + puts("nsNativeAppSupportBeOS::Quit()"); +#endif + + return NS_OK; +} + +PRBool NS_CanRun() +{ + return PR_TRUE; +} +