fixing indenting style issues
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20314 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -38,7 +38,7 @@ DirectoryFilePanel::DirectoryFilePanel(file_panel_mode mode, BMessenger *target,
|
|||||||
bool modal, bool hideWhenDone)
|
bool modal, bool hideWhenDone)
|
||||||
: BFilePanel(mode, target, startDirectory, nodeFlavors,
|
: BFilePanel(mode, target, startDirectory, nodeFlavors,
|
||||||
allowMultipleSelection, message, filter, modal, hideWhenDone),
|
allowMultipleSelection, message, filter, modal, hideWhenDone),
|
||||||
fCurrentButton(NULL)
|
fCurrentButton(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,9 +73,9 @@ ExpanderApp::ArgvReceived(int32 argc, char **argv)
|
|||||||
void
|
void
|
||||||
ExpanderApp::RefsReceived(BMessage *msg)
|
ExpanderApp::RefsReceived(BMessage *msg)
|
||||||
{
|
{
|
||||||
BMessenger messenger(fWindow);
|
BMessenger messenger(fWindow);
|
||||||
msg->AddBool("fromApp", true);
|
msg->AddBool("fromApp", true);
|
||||||
messenger.SendMessage(msg);
|
messenger.SendMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,19 +34,19 @@
|
|||||||
#include "ExpanderWindow.h"
|
#include "ExpanderWindow.h"
|
||||||
|
|
||||||
class ExpanderApp : public BApplication {
|
class ExpanderApp : public BApplication {
|
||||||
public:
|
public:
|
||||||
ExpanderApp();
|
ExpanderApp();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void AboutRequested();
|
virtual void AboutRequested();
|
||||||
virtual void ArgvReceived(int32 argc, char **argv);
|
virtual void ArgvReceived(int32 argc, char **argv);
|
||||||
virtual void ReadyToRun();
|
virtual void ReadyToRun();
|
||||||
virtual void RefsReceived(BMessage *msg);
|
virtual void RefsReceived(BMessage *msg);
|
||||||
|
|
||||||
ExpanderSettings fSettings;
|
ExpanderSettings fSettings;
|
||||||
void UpdateSettingsFrom(BMessage *message);
|
void UpdateSettingsFrom(BMessage *message);
|
||||||
private:
|
private:
|
||||||
ExpanderWindow *fWindow;
|
ExpanderWindow *fWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _ExpanderApp_h */
|
#endif /* _ExpanderApp_h */
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ ExpanderPreferences::ExpanderPreferences(BMessage *settings)
|
|||||||
B_WILL_DRAW | B_FRAME_EVENTS, B_PLAIN_BORDER);
|
B_WILL_DRAW | B_FRAME_EVENTS, B_PLAIN_BORDER);
|
||||||
AddChild(background);
|
AddChild(background);
|
||||||
|
|
||||||
rect.OffsetBy(11,9);
|
rect.OffsetBy(11, 9);
|
||||||
rect.bottom -= 64;
|
rect.bottom -= 64;
|
||||||
rect.right -= 22;
|
rect.right -= 22;
|
||||||
BBox *box = new BBox(rect, "background", B_FOLLOW_NONE,
|
BBox *box = new BBox(rect, "background", B_FOLLOW_NONE,
|
||||||
@@ -37,15 +37,15 @@ ExpanderPreferences::ExpanderPreferences(BMessage *settings)
|
|||||||
box->SetLabel("Expander Preferences");
|
box->SetLabel("Expander Preferences");
|
||||||
background->AddChild(box);
|
background->AddChild(box);
|
||||||
|
|
||||||
float maxWidth=box->Bounds().right;
|
float maxWidth = box->Bounds().right;
|
||||||
|
|
||||||
BRect frameRect = box->Bounds();
|
BRect frameRect = box->Bounds();
|
||||||
frameRect.OffsetBy(15,23);
|
frameRect.OffsetBy(15, 23);
|
||||||
frameRect.right = frameRect.left + 200;
|
frameRect.right = frameRect.left + 200;
|
||||||
frameRect.bottom = frameRect.top + 20;
|
frameRect.bottom = frameRect.top + 20;
|
||||||
BRect textRect(frameRect);
|
BRect textRect(frameRect);
|
||||||
textRect.OffsetTo(B_ORIGIN);
|
textRect.OffsetTo(B_ORIGIN);
|
||||||
textRect.InsetBy(1,1);
|
textRect.InsetBy(1, 1);
|
||||||
BStringView *stringView = new BStringView(frameRect, "expansion", "Expansion:",
|
BStringView *stringView = new BStringView(frameRect, "expansion", "Expansion:",
|
||||||
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
stringView->ResizeToPreferred();
|
stringView->ResizeToPreferred();
|
||||||
@@ -100,7 +100,7 @@ ExpanderPreferences::ExpanderPreferences(BMessage *settings)
|
|||||||
|
|
||||||
frameRect = fSameDest->Frame();
|
frameRect = fSameDest->Frame();
|
||||||
frameRect.top = frameRect.bottom + 1;
|
frameRect.top = frameRect.bottom + 1;
|
||||||
fDestUse = new BRadioButton(frameRect, "destUse", "Use:",new BMessage(MSG_DESTUSE));
|
fDestUse = new BRadioButton(frameRect, "destUse", "Use:", new BMessage(MSG_DESTUSE));
|
||||||
fDestUse->ResizeToPreferred();
|
fDestUse->ResizeToPreferred();
|
||||||
if (fDestUse->Frame().right > maxWidth)
|
if (fDestUse->Frame().right > maxWidth)
|
||||||
maxWidth = fDestUse->Frame().right;
|
maxWidth = fDestUse->Frame().right;
|
||||||
@@ -116,7 +116,7 @@ ExpanderPreferences::ExpanderPreferences(BMessage *settings)
|
|||||||
fDestText->ResizeToPreferred();
|
fDestText->ResizeToPreferred();
|
||||||
fDestText->SetDivider(0);
|
fDestText->SetDivider(0);
|
||||||
fDestText->TextView()->MakeEditable(false);
|
fDestText->TextView()->MakeEditable(false);
|
||||||
fDestText->ResizeTo(158,fDestText->Frame().Height());
|
fDestText->ResizeTo(158, fDestText->Frame().Height());
|
||||||
|
|
||||||
fDestText->SetEnabled(false);
|
fDestText->SetEnabled(false);
|
||||||
|
|
||||||
@@ -129,13 +129,13 @@ ExpanderPreferences::ExpanderPreferences(BMessage *settings)
|
|||||||
box->AddChild(fSelect);
|
box->AddChild(fSelect);
|
||||||
fSelect->SetEnabled(false);
|
fSelect->SetEnabled(false);
|
||||||
|
|
||||||
fDestText->MoveBy(0,(fSelect->Frame().Height() - fDestText->Frame().Height())/2.0);
|
fDestText->MoveBy(0, (fSelect->Frame().Height() - fDestText->Frame().Height()) / 2.0);
|
||||||
fDestText->ResizeTo(158,fDestText->Frame().Height());
|
fDestText->ResizeTo(158, fDestText->Frame().Height());
|
||||||
|
|
||||||
frameRect = stringView->Frame();
|
frameRect = stringView->Frame();
|
||||||
frameRect.top = fDestUse->Frame().bottom + 10;
|
frameRect.top = fDestUse->Frame().bottom + 10;
|
||||||
|
|
||||||
stringView = new BStringView(frameRect, "other", "Other:",B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
stringView = new BStringView(frameRect, "other", "Other:", B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
stringView->ResizeToPreferred();
|
stringView->ResizeToPreferred();
|
||||||
if (stringView->Frame().right > maxWidth)
|
if (stringView->Frame().right > maxWidth)
|
||||||
maxWidth = stringView->Frame().right;
|
maxWidth = stringView->Frame().right;
|
||||||
@@ -158,28 +158,28 @@ ExpanderPreferences::ExpanderPreferences(BMessage *settings)
|
|||||||
maxWidth = fAutoShow->Frame().right;
|
maxWidth = fAutoShow->Frame().right;
|
||||||
box->AddChild(fAutoShow);
|
box->AddChild(fAutoShow);
|
||||||
|
|
||||||
box->ResizeTo(maxWidth + 15,fAutoShow->Frame().bottom + 10);
|
box->ResizeTo(maxWidth + 15, fAutoShow->Frame().bottom + 10);
|
||||||
|
|
||||||
rect = BRect(Bounds().right-89, Bounds().bottom-40, Bounds().right-14, Bounds().bottom-16);
|
rect = BRect(Bounds().right - 89, Bounds().bottom - 40, Bounds().right - 14, Bounds().bottom - 16);
|
||||||
|
|
||||||
rect = Bounds();
|
rect = Bounds();
|
||||||
BButton *button = new BButton(rect, "OKButton", "OK",new BMessage(MSG_OK));
|
BButton *button = new BButton(rect, "OKButton", "OK", new BMessage(MSG_OK));
|
||||||
button->MakeDefault(true);
|
button->MakeDefault(true);
|
||||||
button->ResizeToPreferred();
|
button->ResizeToPreferred();
|
||||||
button->MoveTo(box->Frame().right - button->Frame().Width(),box->Frame().bottom + 10 );
|
button->MoveTo(box->Frame().right - button->Frame().Width(), box->Frame().bottom + 10);
|
||||||
background->AddChild(button);
|
background->AddChild(button);
|
||||||
|
|
||||||
rect = button->Frame();
|
rect = button->Frame();
|
||||||
BButton *cancel = new BButton(rect, "CancelButton", "Cancel", new BMessage(MSG_CANCEL));
|
BButton *cancel = new BButton(rect, "CancelButton", "Cancel", new BMessage(MSG_CANCEL));
|
||||||
cancel->ResizeToPreferred();
|
cancel->ResizeToPreferred();
|
||||||
cancel->MoveBy(-cancel->Frame().Width() - 10, (button->Frame().Height() - cancel->Frame().Height()) /2.0);
|
cancel->MoveBy(-cancel->Frame().Width() - 10, (button->Frame().Height() - cancel->Frame().Height()) / 2.0);
|
||||||
background->AddChild(cancel);
|
background->AddChild(cancel);
|
||||||
|
|
||||||
ResizeTo(box->Frame().right + 11 ,button->Frame().bottom + 11);
|
ResizeTo(box->Frame().right + 11 , button->Frame().bottom + 11);
|
||||||
|
|
||||||
BScreen screen(this);
|
BScreen screen(this);
|
||||||
MoveBy((screen.Frame().Width()-Bounds().Width())/2,
|
MoveBy((screen.Frame().Width() - Bounds().Width()) / 2,
|
||||||
(screen.Frame().Height()-Bounds().Height())/2);
|
(screen.Frame().Height() - Bounds().Height()) / 2);
|
||||||
|
|
||||||
bool automatically_expand_files;
|
bool automatically_expand_files;
|
||||||
bool close_when_done;
|
bool close_when_done;
|
||||||
@@ -245,16 +245,16 @@ ExpanderPreferences::MessageReceived(BMessage *msg)
|
|||||||
fUsePanel->Show();
|
fUsePanel->Show();
|
||||||
break;
|
break;
|
||||||
case MSG_DIRECTORY:
|
case MSG_DIRECTORY:
|
||||||
{
|
{
|
||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
fUsePanel->GetPanelDirectory(&ref);
|
fUsePanel->GetPanelDirectory(&ref);
|
||||||
fRef = ref;
|
fRef = ref;
|
||||||
BEntry entry(&ref);
|
BEntry entry(&ref);
|
||||||
BPath path(&entry);
|
BPath path(&entry);
|
||||||
fDestText->SetText(path.Path());
|
fDestText->SetText(path.Path());
|
||||||
fUsePanel->Hide();
|
fUsePanel->Hide();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case B_REFS_RECEIVED:
|
case B_REFS_RECEIVED:
|
||||||
if (msg->FindRef("refs", 0, &fRef) == B_OK) {
|
if (msg->FindRef("refs", 0, &fRef) == B_OK) {
|
||||||
BEntry entry(&fRef, true);
|
BEntry entry(&fRef, true);
|
||||||
@@ -279,7 +279,7 @@ ExpanderPreferences::MessageReceived(BMessage *msg)
|
|||||||
fSettings->ReplaceBool("automatically_expand_files", fAutoExpand->Value() == B_CONTROL_ON);
|
fSettings->ReplaceBool("automatically_expand_files", fAutoExpand->Value() == B_CONTROL_ON);
|
||||||
fSettings->ReplaceBool("close_when_done", fCloseWindow->Value() == B_CONTROL_ON);
|
fSettings->ReplaceBool("close_when_done", fCloseWindow->Value() == B_CONTROL_ON);
|
||||||
fSettings->ReplaceInt8("destination_folder", (fSameDest->Value() == B_CONTROL_ON) ? 0x63
|
fSettings->ReplaceInt8("destination_folder", (fSameDest->Value() == B_CONTROL_ON) ? 0x63
|
||||||
: ( (fLeaveDest->Value() == B_CONTROL_ON) ? 0x66 : 0x65) );
|
: ((fLeaveDest->Value() == B_CONTROL_ON) ? 0x66 : 0x65));
|
||||||
fSettings->ReplaceRef("destination_folder_use", &fRef);
|
fSettings->ReplaceRef("destination_folder_use", &fRef);
|
||||||
fSettings->ReplaceBool("open_destination_folder", fOpenDest->Value() == B_CONTROL_ON);
|
fSettings->ReplaceBool("open_destination_folder", fOpenDest->Value() == B_CONTROL_ON);
|
||||||
fSettings->ReplaceBool("show_contents_listing", fAutoShow->Value() == B_CONTROL_ON);
|
fSettings->ReplaceBool("show_contents_listing", fAutoShow->Value() == B_CONTROL_ON);
|
||||||
|
|||||||
@@ -39,19 +39,19 @@
|
|||||||
#include <RadioButton.h>
|
#include <RadioButton.h>
|
||||||
|
|
||||||
class ExpanderPreferences : public BWindow {
|
class ExpanderPreferences : public BWindow {
|
||||||
public:
|
public:
|
||||||
ExpanderPreferences(BMessage *settings);
|
ExpanderPreferences(BMessage *settings);
|
||||||
virtual ~ExpanderPreferences();
|
virtual ~ExpanderPreferences();
|
||||||
virtual void MessageReceived(BMessage *msg);
|
virtual void MessageReceived(BMessage *msg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BMessage *fSettings;
|
BMessage *fSettings;
|
||||||
BCheckBox *fAutoExpand, *fCloseWindow, *fAutoShow, *fOpenDest;
|
BCheckBox *fAutoExpand, *fCloseWindow, *fAutoShow, *fOpenDest;
|
||||||
BRadioButton *fDestUse, *fSameDest, *fLeaveDest;
|
BRadioButton *fDestUse, *fSameDest, *fLeaveDest;
|
||||||
BButton *fSelect;
|
BButton *fSelect;
|
||||||
BTextControl *fDestText;
|
BTextControl *fDestText;
|
||||||
entry_ref fRef;
|
entry_ref fRef;
|
||||||
DirectoryFilePanel *fUsePanel;
|
DirectoryFilePanel *fUsePanel;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _ExpanderPreferences_h */
|
#endif /* _ExpanderPreferences_h */
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
|
|
||||||
ExpanderRule::ExpanderRule(BString mimetype, BString filenameExtension,
|
ExpanderRule::ExpanderRule(BString mimetype, BString filenameExtension,
|
||||||
BString listingCmd, BString expandCmd)
|
BString listingCmd, BString expandCmd)
|
||||||
:
|
:
|
||||||
fMimeType(mimetype.String()),
|
fMimeType(mimetype.String()),
|
||||||
fFilenameExtension(filenameExtension),
|
fFilenameExtension(filenameExtension),
|
||||||
@@ -26,7 +26,7 @@ ExpanderRule::ExpanderRule(BString mimetype, BString filenameExtension,
|
|||||||
|
|
||||||
|
|
||||||
ExpanderRule::ExpanderRule(const char* mimetype, const char* filenameExtension,
|
ExpanderRule::ExpanderRule(const char* mimetype, const char* filenameExtension,
|
||||||
const char* listingCmd, const char* expandCmd)
|
const char* listingCmd, const char* expandCmd)
|
||||||
:
|
:
|
||||||
fMimeType(mimetype),
|
fMimeType(mimetype),
|
||||||
fFilenameExtension(filenameExtension),
|
fFilenameExtension(filenameExtension),
|
||||||
@@ -58,20 +58,20 @@ ExpanderRules::ExpanderRules()
|
|||||||
|
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
BString strings[4];
|
BString strings[4];
|
||||||
while (fgets(buffer, 1024-1, f)!=NULL) {
|
while (fgets(buffer, 1024 - 1, f) != NULL) {
|
||||||
int32 i = 0, j = 0;
|
int32 i = 0, j = 0;
|
||||||
int32 firstQuote = -1;
|
int32 firstQuote = -1;
|
||||||
while (buffer[i] != '#' && buffer[i] != '\n' && j < 4) {
|
while (buffer[i] != '#' && buffer[i] != '\n' && j < 4) {
|
||||||
if ((j == 0 || j > 1) && buffer[i] == '"') {
|
if ((j == 0 || j > 1) && buffer[i] == '"') {
|
||||||
if (firstQuote >= 0) {
|
if (firstQuote >= 0) {
|
||||||
strings[j++].SetTo(&buffer[firstQuote+1], i-firstQuote-1);
|
strings[j++].SetTo(&buffer[firstQuote+1], i - firstQuote - 1);
|
||||||
firstQuote = -1;
|
firstQuote = -1;
|
||||||
} else
|
} else
|
||||||
firstQuote = i;
|
firstQuote = i;
|
||||||
} else if (j == 1 && (buffer[i] == ' ' || buffer[i] == '\t')) {
|
} else if (j == 1 && (buffer[i] == ' ' || buffer[i] == '\t')) {
|
||||||
if (firstQuote >= 0) {
|
if (firstQuote >= 0) {
|
||||||
if (firstQuote + 1 != i) {
|
if (firstQuote + 1 != i) {
|
||||||
strings[j++].SetTo(&buffer[firstQuote+1], i-firstQuote-1);
|
strings[j++].SetTo(&buffer[firstQuote+1], i - firstQuote - 1);
|
||||||
firstQuote = -1;
|
firstQuote = -1;
|
||||||
} else
|
} else
|
||||||
firstQuote = i;
|
firstQuote = i;
|
||||||
@@ -122,7 +122,7 @@ ExpanderRules::MatchingRule(BString &fileName, const char *filetype)
|
|||||||
{
|
{
|
||||||
int32 count = fList.CountItems();
|
int32 count = fList.CountItems();
|
||||||
int32 length = fileName.Length();
|
int32 length = fileName.Length();
|
||||||
for (int32 i=0; i<count; i++) {
|
for (int32 i = 0; i < count; i++) {
|
||||||
ExpanderRule *rule = (ExpanderRule *)fList.ItemAt(i);
|
ExpanderRule *rule = (ExpanderRule *)fList.ItemAt(i);
|
||||||
if ((rule->MimeType().IsValid() && rule->MimeType() == filetype)
|
if ((rule->MimeType().IsValid() && rule->MimeType() == filetype)
|
||||||
|| (fileName.FindLast(rule->FilenameExtension()) == (length - rule->FilenameExtension().Length())))
|
|| (fileName.FindLast(rule->FilenameExtension()) == (length - rule->FilenameExtension().Length())))
|
||||||
|
|||||||
@@ -91,12 +91,12 @@ ExpanderSettings::ExpanderSettings()
|
|||||||
&& (file.Read(&ref.device, sizeof(ref.device)) == sizeof(ref.device))
|
&& (file.Read(&ref.device, sizeof(ref.device)) == sizeof(ref.device))
|
||||||
&& (file.Read(&ref.directory, sizeof(ref.directory)) == sizeof(ref.directory))
|
&& (file.Read(&ref.directory, sizeof(ref.directory)) == sizeof(ref.directory))
|
||||||
&& (file.Read(&name_size, sizeof(name_size)) == sizeof(name_size))
|
&& (file.Read(&name_size, sizeof(name_size)) == sizeof(name_size))
|
||||||
&& ((name_size <= 0) || (ref.name = (char*)malloc(name_size+1)))
|
&& ((name_size <= 0) || (ref.name = (char*)malloc(name_size + 1)))
|
||||||
&& (file.Read(ref.name, name_size) == name_size)
|
&& (file.Read(ref.name, name_size) == name_size)
|
||||||
&& (file.Read(&open_destination_folder, sizeof(open_destination_folder)) == sizeof(open_destination_folder))
|
&& (file.Read(&open_destination_folder, sizeof(open_destination_folder)) == sizeof(open_destination_folder))
|
||||||
&& (file.Read(&show_contents_listing, sizeof(show_contents_listing)) == sizeof(show_contents_listing))
|
&& (file.Read(&show_contents_listing, sizeof(show_contents_listing)) == sizeof(show_contents_listing))
|
||||||
&& (file.Read(&position, sizeof(position)) == sizeof(position))
|
&& (file.Read(&position, sizeof(position)) == sizeof(position))
|
||||||
) {
|
) {
|
||||||
|
|
||||||
// check if the window position is on screen at all
|
// check if the window position is on screen at all
|
||||||
BScreen screen;
|
BScreen screen;
|
||||||
@@ -105,12 +105,12 @@ ExpanderSettings::ExpanderSettings()
|
|||||||
|
|
||||||
fMessage.ReplaceBool("automatically_expand_files", automatically_expand_files);
|
fMessage.ReplaceBool("automatically_expand_files", automatically_expand_files);
|
||||||
fMessage.ReplaceBool("close_when_done", close_when_done);
|
fMessage.ReplaceBool("close_when_done", close_when_done);
|
||||||
if(destination_folder == 0x66 || destination_folder == 0x63 || destination_folder == 0x65)
|
if (destination_folder == 0x66 || destination_folder == 0x63 || destination_folder == 0x65)
|
||||||
fMessage.ReplaceInt8("destination_folder", destination_folder);
|
fMessage.ReplaceInt8("destination_folder", destination_folder);
|
||||||
if (name_size > 0)
|
if (name_size > 0)
|
||||||
ref.name[name_size] = '\0';
|
ref.name[name_size] = '\0';
|
||||||
BEntry entry(&ref);
|
BEntry entry(&ref);
|
||||||
if(entry.Exists())
|
if (entry.Exists())
|
||||||
fMessage.ReplaceRef("destination_folder_use", &ref);
|
fMessage.ReplaceRef("destination_folder_use", &ref);
|
||||||
fMessage.ReplaceBool("open_destination_folder", open_destination_folder);
|
fMessage.ReplaceBool("open_destination_folder", open_destination_folder);
|
||||||
fMessage.ReplaceBool("show_contents_listing", show_contents_listing);
|
fMessage.ReplaceBool("show_contents_listing", show_contents_listing);
|
||||||
@@ -143,7 +143,7 @@ ExpanderSettings::~ExpanderSettings()
|
|||||||
&& (fMessage.FindInt8("destination_folder", &destination_folder) == B_OK)
|
&& (fMessage.FindInt8("destination_folder", &destination_folder) == B_OK)
|
||||||
&& (fMessage.FindRef("destination_folder_use", &ref) == B_OK)
|
&& (fMessage.FindRef("destination_folder_use", &ref) == B_OK)
|
||||||
&& (fMessage.FindBool("open_destination_folder", &open_destination_folder) == B_OK)
|
&& (fMessage.FindBool("open_destination_folder", &open_destination_folder) == B_OK)
|
||||||
&& (fMessage.FindBool("show_contents_listing", &show_contents_listing) == B_OK) ) {
|
&& (fMessage.FindBool("show_contents_listing", &show_contents_listing) == B_OK)) {
|
||||||
|
|
||||||
file.Write(&unknown, sizeof(unknown));
|
file.Write(&unknown, sizeof(unknown));
|
||||||
file.Write(&automatically_expand_files, sizeof(automatically_expand_files));
|
file.Write(&automatically_expand_files, sizeof(automatically_expand_files));
|
||||||
@@ -154,7 +154,7 @@ ExpanderSettings::~ExpanderSettings()
|
|||||||
file.Write(&ref.device, sizeof(ref.device));
|
file.Write(&ref.device, sizeof(ref.device));
|
||||||
file.Write(&ref.directory, sizeof(ref.directory));
|
file.Write(&ref.directory, sizeof(ref.directory));
|
||||||
int32 name_size = 0;
|
int32 name_size = 0;
|
||||||
if(ref.name)
|
if (ref.name)
|
||||||
name_size = strlen(ref.name);
|
name_size = strlen(ref.name);
|
||||||
file.Write(&name_size, sizeof(name_size));
|
file.Write(&name_size, sizeof(name_size));
|
||||||
file.Write(ref.name, name_size);
|
file.Write(ref.name, name_size);
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
|
|
||||||
const char * ExpanderThreadName = "ExpanderThread";
|
const char * ExpanderThreadName = "ExpanderThread";
|
||||||
|
|
||||||
ExpanderThread::ExpanderThread (BMessage * refs_message, BMessenger * messenger)
|
ExpanderThread::ExpanderThread(BMessage * refs_message, BMessenger * messenger)
|
||||||
: GenericThread(ExpanderThreadName, B_NORMAL_PRIORITY, refs_message),
|
: GenericThread(ExpanderThreadName, B_NORMAL_PRIORITY, refs_message),
|
||||||
fWindowMessenger(messenger),
|
fWindowMessenger(messenger),
|
||||||
fThreadId(-1),
|
fThreadId(-1),
|
||||||
fStdIn(-1),
|
fStdIn(-1),
|
||||||
@@ -24,9 +24,9 @@ ExpanderThread::ExpanderThread (BMessage * refs_message, BMessenger * messenger)
|
|||||||
fExpanderOutputString(),
|
fExpanderOutputString(),
|
||||||
fExpanderOutputBuffer(new char [4096])
|
fExpanderOutputBuffer(new char [4096])
|
||||||
{
|
{
|
||||||
SetDataStore(new BMessage (* refs_message)); // leak?
|
SetDataStore(new BMessage(* refs_message)); // leak?
|
||||||
// prevents bug with B_SIMPLE_DATA
|
// prevents bug with B_SIMPLE_DATA
|
||||||
// (drag&drop messages)
|
// (drag&drop messages)
|
||||||
}
|
}
|
||||||
|
|
||||||
ExpanderThread::~ExpanderThread()
|
ExpanderThread::~ExpanderThread()
|
||||||
@@ -42,13 +42,13 @@ ExpanderThread::ThreadStartup()
|
|||||||
entry_ref srcRef, destRef;
|
entry_ref srcRef, destRef;
|
||||||
BString cmd;
|
BString cmd;
|
||||||
|
|
||||||
if ((status = GetDataStore()->FindRef("srcRef", &srcRef))!=B_OK)
|
if ((status = GetDataStore()->FindRef("srcRef", &srcRef)) != B_OK)
|
||||||
return status;
|
return status;
|
||||||
if ((status = GetDataStore()->FindRef("destRef", &destRef))==B_OK) {
|
if ((status = GetDataStore()->FindRef("destRef", &destRef)) == B_OK) {
|
||||||
BPath path(&destRef);
|
BPath path(&destRef);
|
||||||
chdir(path.Path());
|
chdir(path.Path());
|
||||||
}
|
}
|
||||||
if ((status = GetDataStore()->FindString("cmd", &cmd))!=B_OK)
|
if ((status = GetDataStore()->FindString("cmd", &cmd)) != B_OK)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
BPath path(&srcRef);
|
BPath path(&srcRef);
|
||||||
@@ -73,29 +73,29 @@ ExpanderThread::ThreadStartup()
|
|||||||
if (fThreadId < 0)
|
if (fThreadId < 0)
|
||||||
return fThreadId;
|
return fThreadId;
|
||||||
|
|
||||||
resume_thread(fThreadId);
|
resume_thread(fThreadId);
|
||||||
|
|
||||||
fExpanderOutput = fdopen(fStdOut, "r");
|
fExpanderOutput = fdopen(fStdOut, "r");
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ExpanderThread::ExecuteUnit (void)
|
ExpanderThread::ExecuteUnit(void)
|
||||||
{
|
{
|
||||||
// read output from command
|
// read output from command
|
||||||
// send it to window
|
// send it to window
|
||||||
|
|
||||||
char *output_string = fgets(fExpanderOutputBuffer , 4096-1, fExpanderOutput);
|
char *output_string = fgets(fExpanderOutputBuffer , 4096 - 1, fExpanderOutput);
|
||||||
|
|
||||||
if (output_string == NULL)
|
if (output_string == NULL)
|
||||||
return EOF;
|
return EOF;
|
||||||
|
|
||||||
BMessage message('outp');
|
BMessage message('outp');
|
||||||
message.AddString("output", output_string);
|
message.AddString("output", output_string);
|
||||||
for (int32 i=0; i<5; i++) {
|
for (int32 i = 0; i < 5; i++) {
|
||||||
output_string = fgets(fExpanderOutputBuffer , 4096-1, fExpanderOutput);
|
output_string = fgets(fExpanderOutputBuffer , 4096 - 1, fExpanderOutput);
|
||||||
if(!output_string)
|
if (!output_string)
|
||||||
break;
|
break;
|
||||||
message.AddString("output", output_string);
|
message.AddString("output", output_string);
|
||||||
}
|
}
|
||||||
@@ -108,8 +108,8 @@ status_t
|
|||||||
ExpanderThread::ThreadShutdown(void)
|
ExpanderThread::ThreadShutdown(void)
|
||||||
{
|
{
|
||||||
close(fStdIn);
|
close(fStdIn);
|
||||||
close(fStdOut);
|
close(fStdOut);
|
||||||
close(fStdErr);
|
close(fStdErr);
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
@@ -156,41 +156,41 @@ ExpanderThread::PipeCommand(int argc, const char **argv, int &in, int &out, int
|
|||||||
// and published in the BeDevTalk FAQ
|
// and published in the BeDevTalk FAQ
|
||||||
// http://www.abisoft.com/faq/BeDevTalk_FAQ.html#FAQ-209
|
// http://www.abisoft.com/faq/BeDevTalk_FAQ.html#FAQ-209
|
||||||
|
|
||||||
// Save current FDs
|
// Save current FDs
|
||||||
int old_in = dup(0);
|
int old_in = dup(0);
|
||||||
int old_out = dup(1);
|
int old_out = dup(1);
|
||||||
int old_err = dup(2);
|
int old_err = dup(2);
|
||||||
|
|
||||||
int filedes[2];
|
int filedes[2];
|
||||||
|
|
||||||
/* Create new pipe FDs as stdin, stdout, stderr */
|
/* Create new pipe FDs as stdin, stdout, stderr */
|
||||||
pipe(filedes); dup2(filedes[0],0); close(filedes[0]);
|
pipe(filedes); dup2(filedes[0], 0); close(filedes[0]);
|
||||||
in=filedes[1]; // Write to in, appears on cmd's stdin
|
in = filedes[1]; // Write to in, appears on cmd's stdin
|
||||||
pipe(filedes); dup2(filedes[1],1); close(filedes[1]);
|
pipe(filedes); dup2(filedes[1], 1); close(filedes[1]);
|
||||||
out=filedes[0]; // Read from out, taken from cmd's stdout
|
out = filedes[0]; // Read from out, taken from cmd's stdout
|
||||||
pipe(filedes); dup2(filedes[1],2); close(filedes[1]);
|
pipe(filedes); dup2(filedes[1], 2); close(filedes[1]);
|
||||||
err=filedes[0]; // Read from err, taken from cmd's stderr
|
err = filedes[0]; // Read from err, taken from cmd's stderr
|
||||||
|
|
||||||
// "load" command.
|
// "load" command.
|
||||||
thread_id ret = load_image(argc, argv, envp);
|
thread_id ret = load_image(argc, argv, envp);
|
||||||
|
|
||||||
if (ret < B_OK)
|
if (ret < B_OK)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
// thread ret is now suspended.
|
// thread ret is now suspended.
|
||||||
|
|
||||||
setpgid(ret, ret);
|
setpgid(ret, ret);
|
||||||
|
|
||||||
// Restore old FDs
|
// Restore old FDs
|
||||||
close(0); dup(old_in); close(old_in);
|
close(0); dup(old_in); close(old_in);
|
||||||
close(1); dup(old_out); close(old_out);
|
close(1); dup(old_out); close(old_out);
|
||||||
close(2); dup(old_err); close(old_err);
|
close(2); dup(old_err); close(old_err);
|
||||||
|
|
||||||
/* Theoretically I should do loads of error checking, but
|
/* Theoretically I should do loads of error checking, but
|
||||||
the calls aren't very likely to fail, and that would
|
the calls aren't very likely to fail, and that would
|
||||||
muddy up the example quite a bit. YMMV. */
|
muddy up the example quite a bit. YMMV. */
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ status_t
|
|||||||
ExpanderThread::InterruptExternalExpander()
|
ExpanderThread::InterruptExternalExpander()
|
||||||
{
|
{
|
||||||
thread_info thread_info;
|
thread_info thread_info;
|
||||||
status_t status = get_thread_info (fThreadId, &thread_info);
|
status_t status = get_thread_info(fThreadId, &thread_info);
|
||||||
|
|
||||||
if (status == B_OK) {
|
if (status == B_OK) {
|
||||||
status = send_signal(-fThreadId, SIGINT);
|
status = send_signal(-fThreadId, SIGINT);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ extern const char * ExpanderThreadName;
|
|||||||
|
|
||||||
class ExpanderThread : public GenericThread
|
class ExpanderThread : public GenericThread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ExpanderThread(BMessage *refs_message, BMessenger *messenger);
|
ExpanderThread(BMessage *refs_message, BMessenger *messenger);
|
||||||
~ExpanderThread();
|
~ExpanderThread();
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ public:
|
|||||||
status_t InterruptExternalExpander();
|
status_t InterruptExternalExpander();
|
||||||
status_t WaitOnExternalExpander();
|
status_t WaitOnExternalExpander();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
virtual status_t ThreadStartup();
|
virtual status_t ThreadStartup();
|
||||||
virtual status_t ExecuteUnit();
|
virtual status_t ExecuteUnit();
|
||||||
@@ -64,8 +64,8 @@ private:
|
|||||||
status_t ProcessRefs(BMessage * msg);
|
status_t ProcessRefs(BMessage * msg);
|
||||||
|
|
||||||
thread_id PipeCommand(int argc, const char **argv,
|
thread_id PipeCommand(int argc, const char **argv,
|
||||||
int & in, int & out, int & err,
|
int & in, int & out, int & err,
|
||||||
const char **envp = (const char **) environ);
|
const char **envp = (const char **) environ);
|
||||||
|
|
||||||
BMessenger * fWindowMessenger;
|
BMessenger * fWindowMessenger;
|
||||||
|
|
||||||
|
|||||||
@@ -232,9 +232,9 @@ ExpanderWindow::MessageReceived(BMessage *msg)
|
|||||||
if (fExpandingStarted) {
|
if (fExpandingStarted) {
|
||||||
fExpandingThread->SuspendExternalExpander();
|
fExpandingThread->SuspendExternalExpander();
|
||||||
BAlert *alert = new BAlert("stopAlert", "Are you sure you want to stop expanding this\n"
|
BAlert *alert = new BAlert("stopAlert", "Are you sure you want to stop expanding this\n"
|
||||||
"archive? The expanded items may not be complete.", "Stop", "Continue", NULL,
|
"archive? The expanded items may not be complete.", "Stop", "Continue", NULL,
|
||||||
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
||||||
if (alert->Go()==0) {
|
if (alert->Go() == 0) {
|
||||||
fExpandingThread->ResumeExternalExpander();
|
fExpandingThread->ResumeExternalExpander();
|
||||||
StopExpanding();
|
StopExpanding();
|
||||||
} else
|
} else
|
||||||
@@ -261,56 +261,56 @@ ExpanderWindow::MessageReceived(BMessage *msg)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MSG_SOURCETEXT:
|
case MSG_SOURCETEXT:
|
||||||
{
|
{
|
||||||
BEntry entry(fSourceText->Text(), true);
|
BEntry entry(fSourceText->Text(), true);
|
||||||
if (!entry.Exists()) {
|
if (!entry.Exists()) {
|
||||||
BAlert *alert = new BAlert("srcAlert", "The file doesn't exist",
|
BAlert *alert = new BAlert("srcAlert", "The file doesn't exist",
|
||||||
"Cancel", NULL, NULL,
|
"Cancel", NULL, NULL,
|
||||||
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
||||||
alert->Go();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry_ref ref;
|
|
||||||
entry.GetRef(&ref);
|
|
||||||
ExpanderRule *rule = fRules.MatchingRule(&ref);
|
|
||||||
if (rule) {
|
|
||||||
fSourceChanged = true;
|
|
||||||
fSourceRef = ref;
|
|
||||||
fShowContents->SetEnabled(true);
|
|
||||||
fExpandButton->SetEnabled(true);
|
|
||||||
fExpandItem->SetEnabled(true);
|
|
||||||
fShowItem->SetEnabled(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
BString string = "The file : ";
|
|
||||||
string += fSourceText->Text();
|
|
||||||
string += " is not supported";
|
|
||||||
BAlert *alert = new BAlert("srcAlert", string.String(),
|
|
||||||
"Cancel", NULL, NULL, B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_INFO_ALERT);
|
|
||||||
alert->Go();
|
alert->Go();
|
||||||
|
break;
|
||||||
fShowContents->SetEnabled(false);
|
|
||||||
fExpandButton->SetEnabled(false);
|
|
||||||
fExpandItem->SetEnabled(false);
|
|
||||||
fShowItem->SetEnabled(false);
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
entry_ref ref;
|
||||||
|
entry.GetRef(&ref);
|
||||||
|
ExpanderRule *rule = fRules.MatchingRule(&ref);
|
||||||
|
if (rule) {
|
||||||
|
fSourceChanged = true;
|
||||||
|
fSourceRef = ref;
|
||||||
|
fShowContents->SetEnabled(true);
|
||||||
|
fExpandButton->SetEnabled(true);
|
||||||
|
fExpandItem->SetEnabled(true);
|
||||||
|
fShowItem->SetEnabled(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
BString string = "The file : ";
|
||||||
|
string += fSourceText->Text();
|
||||||
|
string += " is not supported";
|
||||||
|
BAlert *alert = new BAlert("srcAlert", string.String(),
|
||||||
|
"Cancel", NULL, NULL, B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_INFO_ALERT);
|
||||||
|
alert->Go();
|
||||||
|
|
||||||
|
fShowContents->SetEnabled(false);
|
||||||
|
fExpandButton->SetEnabled(false);
|
||||||
|
fExpandItem->SetEnabled(false);
|
||||||
|
fShowItem->SetEnabled(false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MSG_DESTTEXT:
|
case MSG_DESTTEXT:
|
||||||
{
|
{
|
||||||
BEntry entry(fDestText->Text(), true);
|
BEntry entry(fDestText->Text(), true);
|
||||||
if (!entry.Exists()) {
|
if (!entry.Exists()) {
|
||||||
BAlert *alert = new BAlert("destAlert", "The directory was either moved, renamed or not\n"
|
BAlert *alert = new BAlert("destAlert", "The directory was either moved, renamed or not\n"
|
||||||
"supported.",
|
"supported.",
|
||||||
"Cancel", NULL, NULL,
|
"Cancel", NULL, NULL,
|
||||||
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
||||||
alert->Go();
|
alert->Go();
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
entry.GetRef(&fDestRef);
|
|
||||||
}
|
}
|
||||||
break;
|
entry.GetRef(&fDestRef);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MSG_PREFERENCES:
|
case MSG_PREFERENCES:
|
||||||
if (!fPreferences)
|
if (!fPreferences)
|
||||||
fPreferences = new ExpanderPreferences(&fSettings);
|
fPreferences = new ExpanderPreferences(&fSettings);
|
||||||
@@ -319,8 +319,8 @@ ExpanderWindow::MessageReceived(BMessage *msg)
|
|||||||
case 'outp':
|
case 'outp':
|
||||||
if (!fExpandingStarted && fListingStarted) {
|
if (!fExpandingStarted && fListingStarted) {
|
||||||
BString string;
|
BString string;
|
||||||
int32 i=0;
|
int32 i = 0;
|
||||||
while (msg->FindString("output", i++, &string)==B_OK)
|
while (msg->FindString("output", i++, &string) == B_OK)
|
||||||
fListingText->Insert(string.String());
|
fListingText->Insert(string.String());
|
||||||
fListingText->ScrollToSelection();
|
fListingText->ScrollToSelection();
|
||||||
}
|
}
|
||||||
@@ -362,9 +362,9 @@ ExpanderWindow::CanQuit()
|
|||||||
if (fExpandingStarted) {
|
if (fExpandingStarted) {
|
||||||
fExpandingThread->SuspendExternalExpander();
|
fExpandingThread->SuspendExternalExpander();
|
||||||
BAlert *alert = new BAlert("stopAlert", "Are you sure you want to stop expanding this\n"
|
BAlert *alert = new BAlert("stopAlert", "Are you sure you want to stop expanding this\n"
|
||||||
"archive? The expanded items may not be complete.", "Stop", "Continue", NULL,
|
"archive? The expanded items may not be complete.", "Stop", "Continue", NULL,
|
||||||
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
||||||
if (alert->Go()==0) {
|
if (alert->Go() == 0) {
|
||||||
fExpandingThread->ResumeExternalExpander();
|
fExpandingThread->ResumeExternalExpander();
|
||||||
StopExpanding();
|
StopExpanding();
|
||||||
} else {
|
} else {
|
||||||
@@ -409,12 +409,12 @@ ExpanderWindow::RefsReceived(BMessage *msg)
|
|||||||
fSourceChanged = true;
|
fSourceChanged = true;
|
||||||
fSourceRef = ref;
|
fSourceRef = ref;
|
||||||
fSourceText->SetText(path.Path());
|
fSourceText->SetText(path.Path());
|
||||||
if (destination_folder==0x63) {
|
if (destination_folder == 0x63) {
|
||||||
BPath parent;
|
BPath parent;
|
||||||
path.GetParent(&parent);
|
path.GetParent(&parent);
|
||||||
fDestText->SetText(parent.Path());
|
fDestText->SetText(parent.Path());
|
||||||
get_ref_for_path(parent.Path(), &fDestRef);
|
get_ref_for_path(parent.Path(), &fDestRef);
|
||||||
} else if (destination_folder==0x65) {
|
} else if (destination_folder == 0x65) {
|
||||||
fSettings.FindRef("destination_folder_use", &fDestRef);
|
fSettings.FindRef("destination_folder_use", &fDestRef);
|
||||||
BEntry dEntry(&fDestRef, true);
|
BEntry dEntry(&fDestRef, true);
|
||||||
BPath dPath(&dEntry);
|
BPath dPath(&dEntry);
|
||||||
@@ -440,7 +440,7 @@ ExpanderWindow::RefsReceived(BMessage *msg)
|
|||||||
AutoExpand();
|
AutoExpand();
|
||||||
} else
|
} else
|
||||||
AutoListing();
|
AutoListing();
|
||||||
} else if(node.IsDirectory()) {
|
} else if (node.IsDirectory()) {
|
||||||
fDestRef = ref;
|
fDestRef = ref;
|
||||||
fDestText->SetText(path.Path());
|
fDestText->SetText(path.Path());
|
||||||
}
|
}
|
||||||
@@ -458,9 +458,9 @@ ExpanderWindow::StartExpanding()
|
|||||||
BEntry destEntry(fDestText->Text(), true);
|
BEntry destEntry(fDestText->Text(), true);
|
||||||
if (!destEntry.Exists()) {
|
if (!destEntry.Exists()) {
|
||||||
BAlert *alert = new BAlert("destAlert", "The directory was either moved, renamed or not\n"
|
BAlert *alert = new BAlert("destAlert", "The directory was either moved, renamed or not\n"
|
||||||
"supported.",
|
"supported.",
|
||||||
"Cancel", NULL, NULL,
|
"Cancel", NULL, NULL,
|
||||||
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
||||||
alert->Go();
|
alert->Go();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class ExpanderWindow : public BWindow {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool CanQuit();
|
bool CanQuit();
|
||||||
// returns true if the window can be closed safely, false if not
|
// returns true if the window can be closed safely, false if not
|
||||||
void CloseWindowOrKeepOpen();
|
void CloseWindowOrKeepOpen();
|
||||||
void OpenDestFolder();
|
void OpenDestFolder();
|
||||||
void AutoListing();
|
void AutoListing();
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
GenericThread::GenericThread(const char * a_thread_name, int32 a_priority, BMessage * a_message)
|
GenericThread::GenericThread(const char * a_thread_name, int32 a_priority, BMessage * a_message)
|
||||||
:
|
:
|
||||||
m_thread_data_store (a_message),
|
m_thread_data_store(a_message),
|
||||||
m_thread_id (spawn_thread (private_thread_function, a_thread_name, a_priority, this)),
|
m_thread_id(spawn_thread(private_thread_function, a_thread_name, a_priority, this)),
|
||||||
m_execute_unit (create_sem(1, "m_execute_unit")),
|
m_execute_unit(create_sem(1, "m_execute_unit")),
|
||||||
m_quit_requested (false),
|
m_quit_requested(false),
|
||||||
m_thread_is_paused (false)
|
m_thread_is_paused(false)
|
||||||
{
|
{
|
||||||
if (m_thread_data_store == NULL)
|
if (m_thread_data_store == NULL)
|
||||||
m_thread_data_store = new BMessage();
|
m_thread_data_store = new BMessage();
|
||||||
@@ -23,26 +23,26 @@ GenericThread::~GenericThread()
|
|||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::ThreadFunction (void)
|
GenericThread::ThreadFunction(void)
|
||||||
{
|
{
|
||||||
status_t status = B_OK;
|
status_t status = B_OK;
|
||||||
|
|
||||||
status = ThreadStartup(); // Subclass and override this function
|
status = ThreadStartup(); // Subclass and override this function
|
||||||
if (status != B_OK)
|
if (status != B_OK)
|
||||||
{
|
{
|
||||||
ThreadStartupFailed (status);
|
ThreadStartupFailed(status);
|
||||||
return (status);
|
return (status);
|
||||||
// is this the right thing to do?
|
// is this the right thing to do?
|
||||||
}
|
}
|
||||||
|
|
||||||
while(1)
|
while (1)
|
||||||
{
|
{
|
||||||
if (HasQuitBeenRequested())
|
if (HasQuitBeenRequested())
|
||||||
{
|
{
|
||||||
status = ThreadShutdown(); // Subclass and override this function
|
status = ThreadShutdown(); // Subclass and override this function
|
||||||
if (status != B_OK)
|
if (status != B_OK)
|
||||||
{
|
{
|
||||||
ThreadShutdownFailed (status);
|
ThreadShutdownFailed(status);
|
||||||
return (status);
|
return (status);
|
||||||
// what do we do?
|
// what do we do?
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ GenericThread::ThreadFunction (void)
|
|||||||
status = ExecuteUnit(); // Subclass and override
|
status = ExecuteUnit(); // Subclass and override
|
||||||
|
|
||||||
if (status != B_OK)
|
if (status != B_OK)
|
||||||
ExecuteUnitFailed (status); // Subclass and override
|
ExecuteUnitFailed(status); // Subclass and override
|
||||||
|
|
||||||
EndUnit();
|
EndUnit();
|
||||||
}
|
}
|
||||||
@@ -64,7 +64,7 @@ GenericThread::ThreadFunction (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::ThreadStartup (void)
|
GenericThread::ThreadStartup(void)
|
||||||
{
|
{
|
||||||
// This function is virtual.
|
// This function is virtual.
|
||||||
// Subclass and override this function.
|
// Subclass and override this function.
|
||||||
@@ -74,7 +74,7 @@ GenericThread::ThreadStartup (void)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::ExecuteUnit (void)
|
GenericThread::ExecuteUnit(void)
|
||||||
{
|
{
|
||||||
// This function is virtual.
|
// This function is virtual.
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ GenericThread::ExecuteUnit (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::ThreadShutdown (void)
|
GenericThread::ThreadShutdown(void)
|
||||||
{
|
{
|
||||||
// This function is virtual.
|
// This function is virtual.
|
||||||
// Subclass and override this function.
|
// Subclass and override this function.
|
||||||
@@ -95,7 +95,7 @@ GenericThread::ThreadShutdown (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::ThreadStartupFailed (status_t a_status)
|
GenericThread::ThreadStartupFailed(status_t a_status)
|
||||||
{
|
{
|
||||||
// This function is virtual.
|
// This function is virtual.
|
||||||
// Subclass and override this function.
|
// Subclass and override this function.
|
||||||
@@ -104,7 +104,7 @@ GenericThread::ThreadStartupFailed (status_t a_status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::ExecuteUnitFailed (status_t a_status)
|
GenericThread::ExecuteUnitFailed(status_t a_status)
|
||||||
{
|
{
|
||||||
// This function is virtual.
|
// This function is virtual.
|
||||||
// Subclass and override this function.
|
// Subclass and override this function.
|
||||||
@@ -113,7 +113,7 @@ GenericThread::ExecuteUnitFailed (status_t a_status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::ThreadShutdownFailed (status_t a_status)
|
GenericThread::ThreadShutdownFailed(status_t a_status)
|
||||||
{
|
{
|
||||||
// This function is virtual.
|
// This function is virtual.
|
||||||
// Subclass and override this function.
|
// Subclass and override this function.
|
||||||
@@ -122,26 +122,26 @@ GenericThread::ThreadShutdownFailed (status_t a_status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::Start (void)
|
GenericThread::Start(void)
|
||||||
{
|
{
|
||||||
status_t status = B_OK;
|
status_t status = B_OK;
|
||||||
|
|
||||||
if (IsPaused())
|
if (IsPaused())
|
||||||
{
|
{
|
||||||
status = release_sem (m_execute_unit);
|
status = release_sem(m_execute_unit);
|
||||||
if (status != B_OK)
|
if (status != B_OK)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
m_thread_is_paused = false;
|
m_thread_is_paused = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = resume_thread (m_thread_id);
|
status = resume_thread(m_thread_id);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32
|
int32
|
||||||
GenericThread::private_thread_function (void * a_simple_thread_ptr)
|
GenericThread::private_thread_function(void * a_simple_thread_ptr)
|
||||||
{
|
{
|
||||||
status_t status = B_OK;
|
status_t status = B_OK;
|
||||||
|
|
||||||
@@ -151,28 +151,28 @@ GenericThread::private_thread_function (void * a_simple_thread_ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
BMessage *
|
BMessage *
|
||||||
GenericThread::GetDataStore (void)
|
GenericThread::GetDataStore(void)
|
||||||
{
|
{
|
||||||
return (m_thread_data_store);
|
return (m_thread_data_store);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::SetDataStore (BMessage * a_message)
|
GenericThread::SetDataStore(BMessage * a_message)
|
||||||
{
|
{
|
||||||
m_thread_data_store = a_message;
|
m_thread_data_store = a_message;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::Pause (bool a_do_block, bigtime_t a_timeout)
|
GenericThread::Pause(bool a_do_block, bigtime_t a_timeout)
|
||||||
{
|
{
|
||||||
status_t status = B_OK;
|
status_t status = B_OK;
|
||||||
|
|
||||||
if (a_do_block)
|
if (a_do_block)
|
||||||
status = acquire_sem(m_execute_unit);
|
status = acquire_sem(m_execute_unit);
|
||||||
// thread will wait on semaphore
|
// thread will wait on semaphore
|
||||||
else
|
else
|
||||||
status = acquire_sem_etc(m_execute_unit, 1, B_RELATIVE_TIMEOUT, a_timeout);
|
status = acquire_sem_etc(m_execute_unit, 1, B_RELATIVE_TIMEOUT, a_timeout);
|
||||||
// thread will timeout
|
// thread will timeout
|
||||||
|
|
||||||
if (status == B_OK)
|
if (status == B_OK)
|
||||||
{
|
{
|
||||||
@@ -184,31 +184,31 @@ GenericThread::Pause (bool a_do_block, bigtime_t a_timeout)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::Quit (void)
|
GenericThread::Quit(void)
|
||||||
{
|
{
|
||||||
m_quit_requested = true;
|
m_quit_requested = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
GenericThread::HasQuitBeenRequested (void)
|
GenericThread::HasQuitBeenRequested(void)
|
||||||
{
|
{
|
||||||
return (m_quit_requested);
|
return (m_quit_requested);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
GenericThread::IsPaused (void)
|
GenericThread::IsPaused(void)
|
||||||
{
|
{
|
||||||
return (m_thread_is_paused);
|
return (m_thread_is_paused);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::Suspend (void)
|
GenericThread::Suspend(void)
|
||||||
{
|
{
|
||||||
return (suspend_thread(m_thread_id));
|
return (suspend_thread(m_thread_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::Resume (void)
|
GenericThread::Resume(void)
|
||||||
{
|
{
|
||||||
release_sem(m_execute_unit); // to counteract Pause()
|
release_sem(m_execute_unit); // to counteract Pause()
|
||||||
m_thread_is_paused = false;
|
m_thread_is_paused = false;
|
||||||
@@ -217,61 +217,61 @@ GenericThread::Resume (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::Kill (void)
|
GenericThread::Kill(void)
|
||||||
{
|
{
|
||||||
return (kill_thread(m_thread_id));
|
return (kill_thread(m_thread_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::ExitWithReturnValue (status_t a_return_value)
|
GenericThread::ExitWithReturnValue(status_t a_return_value)
|
||||||
{
|
{
|
||||||
exit_thread(a_return_value);
|
exit_thread(a_return_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::SetExitCallback (void (*a_callback)(void*), void * a_data)
|
GenericThread::SetExitCallback(void(*a_callback)(void*), void * a_data)
|
||||||
{
|
{
|
||||||
return (on_exit_thread(a_callback, a_data));
|
return (on_exit_thread(a_callback, a_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::WaitForThread (status_t * a_exit_value)
|
GenericThread::WaitForThread(status_t * a_exit_value)
|
||||||
{
|
{
|
||||||
return (wait_for_thread(m_thread_id, a_exit_value));
|
return (wait_for_thread(m_thread_id, a_exit_value));
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::Rename (char * a_name)
|
GenericThread::Rename(char * a_name)
|
||||||
{
|
{
|
||||||
return (rename_thread(m_thread_id, a_name));
|
return (rename_thread(m_thread_id, a_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::SendData (int32 a_code, void * a_buffer, size_t a_buffer_size)
|
GenericThread::SendData(int32 a_code, void * a_buffer, size_t a_buffer_size)
|
||||||
{
|
{
|
||||||
return (send_data(m_thread_id, a_code, a_buffer, a_buffer_size));
|
return (send_data(m_thread_id, a_code, a_buffer, a_buffer_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
int32
|
int32
|
||||||
GenericThread::ReceiveData (thread_id * a_sender, void * a_buffer, size_t a_buffer_size)
|
GenericThread::ReceiveData(thread_id * a_sender, void * a_buffer, size_t a_buffer_size)
|
||||||
{
|
{
|
||||||
return (receive_data(a_sender, a_buffer, a_buffer_size));
|
return (receive_data(a_sender, a_buffer, a_buffer_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
GenericThread::HasData (void)
|
GenericThread::HasData(void)
|
||||||
{
|
{
|
||||||
return (has_data(m_thread_id));
|
return (has_data(m_thread_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::SetPriority (int32 a_new_priority)
|
GenericThread::SetPriority(int32 a_new_priority)
|
||||||
{
|
{
|
||||||
return (set_thread_priority(m_thread_id, a_new_priority));
|
return (set_thread_priority(m_thread_id, a_new_priority));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::Snooze (bigtime_t a_microseconds)
|
GenericThread::Snooze(bigtime_t a_microseconds)
|
||||||
{
|
{
|
||||||
Suspend();
|
Suspend();
|
||||||
snooze(a_microseconds);
|
snooze(a_microseconds);
|
||||||
@@ -279,7 +279,7 @@ GenericThread::Snooze (bigtime_t a_microseconds)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::SnoozeUntil (bigtime_t a_microseconds, int a_timebase)
|
GenericThread::SnoozeUntil(bigtime_t a_microseconds, int a_timebase)
|
||||||
{
|
{
|
||||||
Suspend();
|
Suspend();
|
||||||
snooze_until(a_microseconds, a_timebase);
|
snooze_until(a_microseconds, a_timebase);
|
||||||
@@ -287,99 +287,99 @@ GenericThread::SnoozeUntil (bigtime_t a_microseconds, int a_timebase)
|
|||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
GenericThread::GetInfo (thread_info * a_thread_info)
|
GenericThread::GetInfo(thread_info * a_thread_info)
|
||||||
{
|
{
|
||||||
return (get_thread_info(m_thread_id, a_thread_info));
|
return (get_thread_info(m_thread_id, a_thread_info));
|
||||||
}
|
}
|
||||||
|
|
||||||
thread_id
|
thread_id
|
||||||
GenericThread::GetThread (void)
|
GenericThread::GetThread(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.thread);
|
return (t_thread_info.thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
team_id
|
team_id
|
||||||
GenericThread::GetTeam (void)
|
GenericThread::GetTeam(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.team);
|
return (t_thread_info.team);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
GenericThread::GetName (void)
|
GenericThread::GetName(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.name);
|
return (t_thread_info.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
thread_state
|
thread_state
|
||||||
GenericThread::GetState (void)
|
GenericThread::GetState(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.state);
|
return (t_thread_info.state);
|
||||||
}
|
}
|
||||||
|
|
||||||
sem_id
|
sem_id
|
||||||
GenericThread::GetSemaphore (void)
|
GenericThread::GetSemaphore(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.sem);
|
return (t_thread_info.sem);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32
|
int32
|
||||||
GenericThread::GetPriority (void)
|
GenericThread::GetPriority(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.priority);
|
return (t_thread_info.priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
bigtime_t
|
bigtime_t
|
||||||
GenericThread::GetUserTime (void)
|
GenericThread::GetUserTime(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.user_time);
|
return (t_thread_info.user_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
bigtime_t
|
bigtime_t
|
||||||
GenericThread::GetKernelTime (void)
|
GenericThread::GetKernelTime(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.kernel_time);
|
return (t_thread_info.kernel_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
GenericThread::GetStackBase (void)
|
GenericThread::GetStackBase(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.stack_base);
|
return (t_thread_info.stack_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
GenericThread::GetStackEnd (void)
|
GenericThread::GetStackEnd(void)
|
||||||
{
|
{
|
||||||
thread_info t_thread_info;
|
thread_info t_thread_info;
|
||||||
GetInfo (& t_thread_info);
|
GetInfo(& t_thread_info);
|
||||||
return (t_thread_info.stack_end);
|
return (t_thread_info.stack_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::BeginUnit (void)
|
GenericThread::BeginUnit(void)
|
||||||
{
|
{
|
||||||
acquire_sem(m_execute_unit); // thread can not be paused until it releases semaphore
|
acquire_sem(m_execute_unit); // thread can not be paused until it releases semaphore
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GenericThread::EndUnit (void)
|
GenericThread::EndUnit(void)
|
||||||
{
|
{
|
||||||
release_sem(m_execute_unit); // thread can now be paused
|
release_sem(m_execute_unit); // thread can now be paused
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,69 +7,69 @@
|
|||||||
class GenericThread
|
class GenericThread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GenericThread (const char * a_thread_name = "generic_thread", int32 a_priority = B_NORMAL_PRIORITY, BMessage * a_message = NULL);
|
GenericThread(const char * a_thread_name = "generic_thread", int32 a_priority = B_NORMAL_PRIORITY, BMessage * a_message = NULL);
|
||||||
virtual ~GenericThread (void);
|
virtual ~GenericThread(void);
|
||||||
|
|
||||||
BMessage * GetDataStore (void);
|
BMessage * GetDataStore(void);
|
||||||
void SetDataStore (BMessage * a_message);
|
void SetDataStore(BMessage * a_message);
|
||||||
|
|
||||||
status_t Start (void);
|
status_t Start(void);
|
||||||
status_t Pause (bool a_do_block = TRUE, bigtime_t a_timeout = 0);
|
status_t Pause(bool a_do_block = TRUE, bigtime_t a_timeout = 0);
|
||||||
void Quit (void);
|
void Quit(void);
|
||||||
bool IsPaused (void);
|
bool IsPaused(void);
|
||||||
bool HasQuitBeenRequested (void);
|
bool HasQuitBeenRequested(void);
|
||||||
|
|
||||||
status_t Suspend (void);
|
status_t Suspend(void);
|
||||||
status_t Resume (void);
|
status_t Resume(void);
|
||||||
status_t Kill (void);
|
status_t Kill(void);
|
||||||
|
|
||||||
void ExitWithReturnValue (status_t a_return_value);
|
void ExitWithReturnValue(status_t a_return_value);
|
||||||
status_t SetExitCallback (void (* a_callback)(void *), void * a_data);
|
status_t SetExitCallback(void(* a_callback)(void *), void * a_data);
|
||||||
status_t WaitForThread (status_t * a_exit_value);
|
status_t WaitForThread(status_t * a_exit_value);
|
||||||
|
|
||||||
status_t Rename (char * a_name);
|
status_t Rename(char * a_name);
|
||||||
|
|
||||||
status_t SendData (int32 a_code, void * a_buffer, size_t a_buffer_size);
|
status_t SendData(int32 a_code, void * a_buffer, size_t a_buffer_size);
|
||||||
int32 ReceiveData (thread_id * a_sender, void * a_buffer, size_t a_buffer_size);
|
int32 ReceiveData(thread_id * a_sender, void * a_buffer, size_t a_buffer_size);
|
||||||
bool HasData (void);
|
bool HasData(void);
|
||||||
|
|
||||||
status_t SetPriority (int32 a_new_priority);
|
status_t SetPriority(int32 a_new_priority);
|
||||||
|
|
||||||
void Snooze (bigtime_t a_microseconds);
|
void Snooze(bigtime_t a_microseconds);
|
||||||
void SnoozeUntil (bigtime_t a_microseconds, int a_timebase = B_SYSTEM_TIMEBASE);
|
void SnoozeUntil(bigtime_t a_microseconds, int a_timebase = B_SYSTEM_TIMEBASE);
|
||||||
|
|
||||||
|
|
||||||
status_t GetInfo (thread_info * a_thread_info);
|
status_t GetInfo(thread_info * a_thread_info);
|
||||||
thread_id GetThread (void);
|
thread_id GetThread(void);
|
||||||
team_id GetTeam (void);
|
team_id GetTeam(void);
|
||||||
char * GetName (void);
|
char * GetName(void);
|
||||||
thread_state GetState (void);
|
thread_state GetState(void);
|
||||||
sem_id GetSemaphore (void);
|
sem_id GetSemaphore(void);
|
||||||
int32 GetPriority (void);
|
int32 GetPriority(void);
|
||||||
bigtime_t GetUserTime (void);
|
bigtime_t GetUserTime(void);
|
||||||
bigtime_t GetKernelTime (void);
|
bigtime_t GetKernelTime(void);
|
||||||
void * GetStackBase (void);
|
void * GetStackBase(void);
|
||||||
void * GetStackEnd (void);
|
void * GetStackEnd(void);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual status_t ThreadFunction (void);
|
virtual status_t ThreadFunction(void);
|
||||||
virtual status_t ThreadStartup (void);
|
virtual status_t ThreadStartup(void);
|
||||||
virtual status_t ExecuteUnit (void);
|
virtual status_t ExecuteUnit(void);
|
||||||
virtual status_t ThreadShutdown (void);
|
virtual status_t ThreadShutdown(void);
|
||||||
|
|
||||||
virtual void ThreadStartupFailed (status_t a_status);
|
virtual void ThreadStartupFailed(status_t a_status);
|
||||||
virtual void ExecuteUnitFailed (status_t a_status);
|
virtual void ExecuteUnitFailed(status_t a_status);
|
||||||
virtual void ThreadShutdownFailed (status_t a_status);
|
virtual void ThreadShutdownFailed(status_t a_status);
|
||||||
|
|
||||||
void BeginUnit (void); // acquire m_execute_cycle
|
void BeginUnit(void); // acquire m_execute_cycle
|
||||||
void EndUnit (void); // release m_execute_cycle
|
void EndUnit(void); // release m_execute_cycle
|
||||||
|
|
||||||
BMessage * m_thread_data_store;
|
BMessage * m_thread_data_store;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
static status_t private_thread_function (void * a_simple_thread_ptr);
|
static status_t private_thread_function(void * a_simple_thread_ptr);
|
||||||
|
|
||||||
thread_id m_thread_id;
|
thread_id m_thread_id;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user