From c615771892bcd8c480f6ee327ecdbde92081a44f Mon Sep 17 00:00:00 2001 From: Michael Pfeiffer Date: Thu, 26 Sep 2002 23:46:13 +0000 Subject: [PATCH] Clean up. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1203 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/print/PrintServerApp.R5.cpp | 15 ++++++++++++ .../print/PrintServerApp.Scripting.cpp | 4 ++-- src/servers/print/PrintServerApp.cpp | 24 +++++++++++-------- src/servers/print/PrintServerApp.h | 7 +++--- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/servers/print/PrintServerApp.R5.cpp b/src/servers/print/PrintServerApp.R5.cpp index 79674b20b7..fd6d59e49c 100644 --- a/src/servers/print/PrintServerApp.R5.cpp +++ b/src/servers/print/PrintServerApp.R5.cpp @@ -129,9 +129,24 @@ void PrintServerApp::AsyncHandleMessage(BMessage* msg) } } +#include + +void PrintSender(BMessage* msg) { + BMessenger msgr = msg->ReturnAddress(); +// if (msgr.InitCheck() == B_OK) { + team_id team = msgr.Team(); + app_info info; + if (be_roster->GetRunningAppInfo(team, &info) == B_OK) { + fprintf(stderr, "PrintSender signature = %s\n", info.signature); + } else + fprintf(stderr, "PrintSender could not get app_info\n"); +// } else +// fprintf(stderr, "PrintSender invalid BMessenger\n"); +} void PrintServerApp::Handle_BeOSR5_Message(BMessage* msg) { + PrintSender(msg); switch(msg->what) { // Get currently selected printer case PSRV_GET_ACTIVE_PRINTER: { diff --git a/src/servers/print/PrintServerApp.Scripting.cpp b/src/servers/print/PrintServerApp.Scripting.cpp index b5484c493f..9e6b986a2f 100644 --- a/src/servers/print/PrintServerApp.Scripting.cpp +++ b/src/servers/print/PrintServerApp.Scripting.cpp @@ -108,8 +108,8 @@ PrintServerApp::HandleScriptingCommand(BMessage* msg) Printer* printer = GetPrinterFromSpecifier(&spec); status_t rc = B_BAD_VALUE; - if (printer != NULL && (rc=printer->Remove()) == B_OK) { - printer->Release(); + if (printer != NULL) { + rc=printer->Remove(); } BMessage reply(B_REPLY); diff --git a/src/servers/print/PrintServerApp.cpp b/src/servers/print/PrintServerApp.cpp index 37317d626e..0afc087433 100644 --- a/src/servers/print/PrintServerApp.cpp +++ b/src/servers/print/PrintServerApp.cpp @@ -153,9 +153,8 @@ bool PrintServerApp::QuitRequested() // Release all printers Printer* printer; while ((printer = Printer::At(0)) != NULL) { - Printer::Remove(printer); printer->AbortPrintThread(); - printer->Release(); + UnregisterPrinter(printer); } // Wait for printers @@ -180,18 +179,24 @@ void PrintServerApp::RegisterPrinter(BDirectory* printer) { BAutolock lock(gLock); if (lock.IsLocked()) { Resource* r = fResourceManager.Allocate(transport.String(), address.String(), connection.String()); - new Printer(printer, r); + Printer* p = new Printer(printer, r); + AddHandler(p); if (fNumberOfPrinters == 0) acquire_sem(fNoPrinterAvailable); fNumberOfPrinters ++; } } +void PrintServerApp::UnregisterPrinter(Printer* printer) { + RemoveHandler(printer); + Printer::Remove(printer); + printer->Release(); +} -void PrintServerApp::NotifyPrinterDeletion(Resource* res) { +void PrintServerApp::NotifyPrinterDeletion(Printer* printer) { BAutolock lock(gLock); if (lock.IsLocked()) { fNumberOfPrinters --; - fResourceManager.Free(res); + fResourceManager.Free(printer->GetResource()); if (fNumberOfPrinters == 0) release_sem(fNoPrinterAvailable); } } @@ -206,8 +211,7 @@ void PrintServerApp::HandleRemovedPrinter(BMessage* msg) { msg->FindInt64("node", &node) == B_OK && (printer = Printer::Find(device, node)) != NULL) { if (printer == fDefaultPrinter) fDefaultPrinter = NULL; - Printer::Remove(printer); - printer->Release(); + UnregisterPrinter(printer); } } @@ -281,9 +285,9 @@ status_t PrintServerApp::SetupPrinterList() void PrintServerApp::MessageReceived(BMessage* msg) { - fprintf(stdout, "PrintServerApp\n"); - msg->PrintToStream(); - fflush(stdout); +// fprintf(stdout, "PrintServerApp\n"); +// msg->PrintToStream(); printf("\n\n"); +// fflush(stdout); switch(msg->what) { case PSRV_GET_ACTIVE_PRINTER: case PSRV_MAKE_PRINTER_ACTIVE_QUIETLY: diff --git a/src/servers/print/PrintServerApp.h b/src/servers/print/PrintServerApp.h index 5f7623cbb3..ce13aadd59 100644 --- a/src/servers/print/PrintServerApp.h +++ b/src/servers/print/PrintServerApp.h @@ -64,7 +64,7 @@ public: bool QuitRequested(); void MessageReceived(BMessage* msg); - void NotifyPrinterDeletion(Resource* res); + void NotifyPrinterDeletion(Printer* printer); // Scripting support, see PrintServerApp.Scripting.cpp status_t GetSupportedSuites(BMessage* msg); @@ -83,6 +83,7 @@ private: const char* transportPath); void RegisterPrinter(BDirectory* node); + void UnregisterPrinter(Printer* printer); void HandleRemovedPrinter(BMessage* msg); status_t StoreDefaultPrinter(); @@ -95,8 +96,8 @@ private: Printer* fDefaultPrinter; BBitmap fSelectedIconMini; BBitmap fSelectedIconLarge; - int fNumberOfPrinters; - sem_id fNoPrinterAvailable; + int fNumberOfPrinters; // number of existing Printer objects + sem_id fNoPrinterAvailable; // can be acquired if number of printers == 0 // "Classic" BeOS R5 support, see PrintServerApp.R5.cpp static status_t async_thread(void* data);