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)
|
void PrintServerApp::Handle_BeOSR5_Message(BMessage* msg)
|
||||||
{
|
{
|
||||||
|
PrintSender(msg);
|
||||||
switch(msg->what) {
|
switch(msg->what) {
|
||||||
// Get currently selected printer
|
// Get currently selected printer
|
||||||
case PSRV_GET_ACTIVE_PRINTER: {
|
case PSRV_GET_ACTIVE_PRINTER: {
|
||||||
|
|||||||
@@ -108,8 +108,8 @@ PrintServerApp::HandleScriptingCommand(BMessage* msg)
|
|||||||
Printer* printer = GetPrinterFromSpecifier(&spec);
|
Printer* printer = GetPrinterFromSpecifier(&spec);
|
||||||
status_t rc = B_BAD_VALUE;
|
status_t rc = B_BAD_VALUE;
|
||||||
|
|
||||||
if (printer != NULL && (rc=printer->Remove()) == B_OK) {
|
if (printer != NULL) {
|
||||||
printer->Release();
|
rc=printer->Remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
BMessage reply(B_REPLY);
|
BMessage reply(B_REPLY);
|
||||||
|
|||||||
@@ -153,9 +153,8 @@ bool PrintServerApp::QuitRequested()
|
|||||||
// Release all printers
|
// Release all printers
|
||||||
Printer* printer;
|
Printer* printer;
|
||||||
while ((printer = Printer::At(0)) != NULL) {
|
while ((printer = Printer::At(0)) != NULL) {
|
||||||
Printer::Remove(printer);
|
|
||||||
printer->AbortPrintThread();
|
printer->AbortPrintThread();
|
||||||
printer->Release();
|
UnregisterPrinter(printer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for printers
|
// Wait for printers
|
||||||
@@ -180,18 +179,24 @@ void PrintServerApp::RegisterPrinter(BDirectory* printer) {
|
|||||||
BAutolock lock(gLock);
|
BAutolock lock(gLock);
|
||||||
if (lock.IsLocked()) {
|
if (lock.IsLocked()) {
|
||||||
Resource* r = fResourceManager.Allocate(transport.String(), address.String(), connection.String());
|
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);
|
if (fNumberOfPrinters == 0) acquire_sem(fNoPrinterAvailable);
|
||||||
fNumberOfPrinters ++;
|
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);
|
BAutolock lock(gLock);
|
||||||
if (lock.IsLocked()) {
|
if (lock.IsLocked()) {
|
||||||
fNumberOfPrinters --;
|
fNumberOfPrinters --;
|
||||||
fResourceManager.Free(res);
|
fResourceManager.Free(printer->GetResource());
|
||||||
if (fNumberOfPrinters == 0) release_sem(fNoPrinterAvailable);
|
if (fNumberOfPrinters == 0) release_sem(fNoPrinterAvailable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -206,8 +211,7 @@ void PrintServerApp::HandleRemovedPrinter(BMessage* msg) {
|
|||||||
msg->FindInt64("node", &node) == B_OK &&
|
msg->FindInt64("node", &node) == B_OK &&
|
||||||
(printer = Printer::Find(device, node)) != NULL) {
|
(printer = Printer::Find(device, node)) != NULL) {
|
||||||
if (printer == fDefaultPrinter) fDefaultPrinter = NULL;
|
if (printer == fDefaultPrinter) fDefaultPrinter = NULL;
|
||||||
Printer::Remove(printer);
|
UnregisterPrinter(printer);
|
||||||
printer->Release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,9 +285,9 @@ status_t PrintServerApp::SetupPrinterList()
|
|||||||
void
|
void
|
||||||
PrintServerApp::MessageReceived(BMessage* msg)
|
PrintServerApp::MessageReceived(BMessage* msg)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "PrintServerApp\n");
|
// fprintf(stdout, "PrintServerApp\n");
|
||||||
msg->PrintToStream();
|
// msg->PrintToStream(); printf("\n\n");
|
||||||
fflush(stdout);
|
// fflush(stdout);
|
||||||
switch(msg->what) {
|
switch(msg->what) {
|
||||||
case PSRV_GET_ACTIVE_PRINTER:
|
case PSRV_GET_ACTIVE_PRINTER:
|
||||||
case PSRV_MAKE_PRINTER_ACTIVE_QUIETLY:
|
case PSRV_MAKE_PRINTER_ACTIVE_QUIETLY:
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public:
|
|||||||
|
|
||||||
bool QuitRequested();
|
bool QuitRequested();
|
||||||
void MessageReceived(BMessage* msg);
|
void MessageReceived(BMessage* msg);
|
||||||
void NotifyPrinterDeletion(Resource* res);
|
void NotifyPrinterDeletion(Printer* printer);
|
||||||
|
|
||||||
// Scripting support, see PrintServerApp.Scripting.cpp
|
// Scripting support, see PrintServerApp.Scripting.cpp
|
||||||
status_t GetSupportedSuites(BMessage* msg);
|
status_t GetSupportedSuites(BMessage* msg);
|
||||||
@@ -83,6 +83,7 @@ private:
|
|||||||
const char* transportPath);
|
const char* transportPath);
|
||||||
|
|
||||||
void RegisterPrinter(BDirectory* node);
|
void RegisterPrinter(BDirectory* node);
|
||||||
|
void UnregisterPrinter(Printer* printer);
|
||||||
void HandleRemovedPrinter(BMessage* msg);
|
void HandleRemovedPrinter(BMessage* msg);
|
||||||
|
|
||||||
status_t StoreDefaultPrinter();
|
status_t StoreDefaultPrinter();
|
||||||
@@ -95,8 +96,8 @@ private:
|
|||||||
Printer* fDefaultPrinter;
|
Printer* fDefaultPrinter;
|
||||||
BBitmap fSelectedIconMini;
|
BBitmap fSelectedIconMini;
|
||||||
BBitmap fSelectedIconLarge;
|
BBitmap fSelectedIconLarge;
|
||||||
int fNumberOfPrinters;
|
int fNumberOfPrinters; // number of existing Printer objects
|
||||||
sem_id fNoPrinterAvailable;
|
sem_id fNoPrinterAvailable; // can be acquired if number of printers == 0
|
||||||
|
|
||||||
// "Classic" BeOS R5 support, see PrintServerApp.R5.cpp
|
// "Classic" BeOS R5 support, see PrintServerApp.R5.cpp
|
||||||
static status_t async_thread(void* data);
|
static status_t async_thread(void* data);
|
||||||
|
|||||||
Reference in New Issue
Block a user