本文整理汇总了C++中BLooper::Lock方法的典型用法代码示例。如果您正苦于以下问题:C++ BLooper::Lock方法的具体用法?C++ BLooper::Lock怎么用?C++ BLooper::Lock使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BLooper
的用法示例。
在下文中一共展示了BLooper::Lock方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MakeFocus
void TTimeTextView::MakeFocus(bool focusState)
{
BTextView::MakeFocus(focusState);
// Inform target
if ( focusState == false)
{
if (m_Target)
{
BLooper *looper = m_Target->Looper();
if ( looper->Lock() )
{
CheckLastEdit();
for (int16 index = 1; index < 5; index++)
ConvertToTime(index);
if (m_MessageID)
{
BMessage *message = new BMessage(m_MessageID);
message->AddInt32("TheTime", m_Time);
m_Target->MessageReceived( message);
looper->Unlock();
delete message;
}
}
}
}
}
示例2:
void
TDeskbarMenu::DetachedFromWindow()
{
if (fBarView != NULL) {
BLooper* looper = fBarView->Looper();
if (looper != NULL && looper->Lock()) {
fBarView->DragStop();
looper->Unlock();
}
}
// don't call BNavMenu::DetachedFromWindow
// it sets the TypesList to NULL
BMenu::DetachedFromWindow();
}
示例3: Invoke
status_t
TBarMenuTitle::Invoke(BMessage* message)
{
TBarView* barview = dynamic_cast<TBarApp*>(be_app)->BarView();
if (barview) {
BLooper* looper = barview->Looper();
if (looper->Lock()) {
// tell barview to add the refs to the deskbar menu
barview->HandleDeskbarMenu(NULL);
looper->Unlock();
}
}
return BMenuItem::Invoke(message);
}
示例4:
bool
BMessenger::LockTarget() const
{
BLooper* looper = NULL;
Target(&looper);
if (looper != NULL && looper->Lock()) {
if (looper->fMsgPort == fPort)
return true;
looper->Unlock();
return false;
}
return false;
}
示例5: IsTargetLocal
/*
bool IsTargetLocal() const
@case 3 this is initialized to local target with specific handler
@results should return true.
*/
void TargetTester::IsTargetLocalTest3()
{
// create looper and handler
status_t result = B_OK;
BLooper *looper = new BLooper;
looper->Run();
LooperQuitter quitter(looper);
BHandler *handler = new BHandler;
HandlerDeleter deleter(handler);
CHK(looper->Lock());
looper->AddHandler(handler);
looper->Unlock();
// create the messenger and do the checks
BMessenger messenger(handler, NULL, &result);
CHK(messenger.IsTargetLocal() == true);
}
示例6:
status_t
BLooper::_task0_(void* arg)
{
BLooper* looper = (BLooper*)arg;
PRINT(("LOOPER: _task0_()\n"));
if (looper->Lock()) {
PRINT(("LOOPER: looper locked\n"));
looper->task_looper();
delete looper;
}
PRINT(("LOOPER: _task0_() done: thread %ld\n", find_thread(NULL)));
return B_OK;
}
示例7: self
void
TTeamMenu::DetachedFromWindow()
{
TBarView* barView = (dynamic_cast<TBarApp*>(be_app))->BarView();
if (barView != NULL) {
BLooper* looper = barView->Looper();
if (looper != NULL && looper->Lock()) {
barView->DragStop();
looper->Unlock();
}
}
BMenu::DetachedFromWindow();
BMessenger self(this);
TBarApp::Unsubscribe(self);
}
示例8: AttachedToWindow
void
TWindowMenu::DetachedFromWindow()
{
// in expando mode the teammenu will not call DragStop,
// thus, it needs to be called from here
TBarView *barview = (dynamic_cast<TBarApp*>(be_app))->BarView();
if (barview && barview->Expando()) {
BLooper *looper = barview->Looper();
if (looper->Lock()) {
Window()->Show(); // We changed the show level in AttachedToWindow(). Undo it.
barview->DragStop();
looper->Unlock();
}
}
BMenu::DetachedFromWindow();
}
示例9:
bool
BHandler::LockLooper()
{
BLooper* looper = fLooper;
// Locking the looper also makes sure that the looper is valid
if (looper != NULL && looper->Lock()) {
// Have we locked the right looper? That's as far as the
// "pseudo-atomic" operation mentioned in the BeBook.
if (fLooper == looper)
return true;
// we locked the wrong looper, bail out
looper->Unlock();
}
return false;
}
示例10: Quit
CannaMethod::~CannaMethod()
{
BLooper *looper = NULL;
cannaLooper.Target( &looper );
if ( looper != NULL )
{
#ifdef DEBUG
SERIAL_PRINT(( "CannaIM:Locking CannaLooper...\n" ));
#endif
if ( looper->Lock() )
#ifdef DEBUG
SERIAL_PRINT(( "CannaIM:CannaLooper locked. Calling Quit().\n" ));
#endif
looper->Quit();
}
WriteSettings();
}
示例11: NotifyDependents
void ArpNotificationType::NotifyDependents(BMessage *msg, bool deliverAsynchronously)
{
BHandler *h;
BLooper *looper;
for (long i=0; (h = (BHandler*)dependents.ItemAt(i)) != 0; i++) {
if (((looper = h->Looper()) != 0)
&& (looper->Lock())) {
// FIX: need to send out the message, and let the views
// invalidate themselves! So be aware that the Update
// implementation will ALWAYS be called from within this
// loop, meaning within a lock/unlock
#if 0 // Uncomment this to debug where messages are going
printf("SENDING MESSAGE TO %s\n", h->Name()); fflush(stdout);
#endif
h->MessageReceived(msg);
looper->Unlock();
}
}
}
示例12: sizeof
int32
ColorField::_UpdateThread(void *data)
{
// initialization
ColorField *colorField = (ColorField *)data;
BLooper *looper = colorField->Looper();
if (looper)
looper->Lock();
BBitmap* bitmap = colorField->fBgBitmap[0];
BView* view = colorField->fBgView[0];
port_id port = colorField->fUpdatePort;
if (looper)
looper->Unlock();
// draw
float h, s, v, r, g, b;
int R, G, B;
int32 msg_code;
char msg_buffer;
while (true) {
port_info info;
do {
read_port(port, &msg_code, &msg_buffer, sizeof(msg_buffer));
get_port_info(port, &info);
} while (info.queue_count);
if (looper)
looper->Lock();
uint colormode = colorField->fColorMode;
float fixedvalue = colorField->fFixedValue;
if (looper)
looper->Unlock();
bitmap->Lock();
view->BeginLineArray(256 * 256);
switch (colormode)
{
case R_SELECTED:
{
R = round(fixedvalue * 255);
for (int G = 0; G < 256; ++G)
for (int B = 0; B < 256; ++B)
DrawColorPoint(BPoint(G, 255.0 - B), R, G, B);
break;
}
case G_SELECTED:
{
G = round(fixedvalue * 255);
for (int R = 0; R < 256; ++R)
for (int B = 0; B < 256; ++B)
DrawColorPoint(BPoint(R, 255.0 - B), R, G, B);
break;
}
case B_SELECTED:
{
B = round(fixedvalue * 255);
for (int R = 0; R < 256; ++R)
for (int G = 0; G < 256; ++G)
DrawColorPoint(BPoint(R, 255.0 - G), R, G, B);
break;
}
case H_SELECTED:
{
h = fixedvalue;
for (int x = 0; x < 256; ++x) {
s = (float)x / 255.0;
for (int y = 0; y < 256; ++y) {
v = (float)y / 255.0;
HSV_to_RGB(h, s, v, r, g, b);
DrawColorPoint(BPoint(x, 255.0 - y), round(r * 255.0),
round(g * 255.0), round(b * 255.0));
}
}
break;
}
case S_SELECTED:
{
s = fixedvalue;
for (int x = 0; x < 256; ++x) {
h = 6.0 / 255 * x;
for (int y = 0; y<256; ++y) {
v = (float)y / 255.0;
HSV_to_RGB(h, s, v, r, g, b);
DrawColorPoint(BPoint(x, 255.0 - y), round(r * 255.0),
round(g * 255.0), round(b * 255.0));
//.........这里部分代码省略.........