Clean up.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1203 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -129,9 +129,24 @@ void PrintServerApp::AsyncHandleMessage(BMessage* msg)
|
||||
}
|
||||
}
|
||||
|
||||
#include <be/app/Roster.h>
|
||||
|
||||
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: {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user