Пример #1
1
int nSend(nTask task, void *msg)
{
  int rc;

  START_CRITICAL();
  pending_sends++;
  { nTask this_task= current_task;

    if (task->status==WAIT_SEND || task->status==WAIT_SEND_TIMEOUT)
    {
      if (task->status==WAIT_SEND_TIMEOUT)
        CancelTask(task);
      task->status= READY;
      PushTask(ready_queue, task); /* En primer lugar en la cola */
    }
    else if (task->status==ZOMBIE)
      nFatalError("nSend", "El receptor es un ``zombie''\n");

    /* En nReply se coloca ``this_task'' en la cola de tareas ready */
    PutTask(task->send_queue, this_task);
    this_task->send.msg= msg;
    this_task->status= WAIT_REPLY;
    ResumeNextReadyTask();

    rc= this_task->send.rc;
  }
  pending_sends--;
  END_CRITICAL();

  return rc;
}
/**
 *	@brief	Called when mouse cursor position is changed.
 */
void MouseHoverUITask::MouseMove()
{
	if (!changeStatusAccordingToMouse())
	{
		CancelTask();
	}
}
Пример #3
0
void
ActiveElementManager::HandlePanStart()
{
  // The user started to pan, so we don't want mTarget to be :active.
  // Make it not :active, and clear any pending task to make it :active.
  CancelTask();
  ResetActive();
}
/**
 *	@brief	Called when timer event occurred.
 *	@param	timerId		ID of the timer.
 */
void MouseHoverUITask::TimerEvent(SInt32 timerId)
{
	if (timerId != UIController::TimerID_MouseHover)
	{
		return;
	}

	UInt32 commandState = getUIManager()->GetCommandState(targetCommandID);
	if (commandState & UIManager::CommandState_Disabled & commandState)
	{
		CancelTask();
		return;
	}

	if (!changeStatusAccordingToMouse())
	{
		CancelTask();
		return;
	}

	if (isBeingHot)
	{
		if (currentStep < stepCount)
		{
			currentStep++;
			updateAppearance();
		}
	}
	else
	{
		if (currentStep > 0)
		{
			currentStep--;
			updateAppearance();
			if (currentStep == 0)
			{
				CancelTask();
			}
		}
	}
}
Пример #5
0
void
ActiveElementManager::HandleTouchEnd(bool aWasClick)
{
  // If the touch was a click, make mTarget :active right away.
  // nsEventStateManager will reset the active element when processing
  // the mouse-down event generated by the click.
  CancelTask();
  if (aWasClick) {
    SetActive(mTarget);
  }

  // Clear mTarget for next touch.
  mTarget = nullptr;
}
Пример #6
0
void
ActiveElementManager::SetTargetElement(nsIDOMEventTarget* aTarget)
{
  if (mTarget) {
    // Multiple fingers on screen (since HandleTouchEnd clears mTarget).
    CancelTask();
    ResetActive();
    mTarget = nullptr;
    return;
  }

  mTarget = do_QueryInterface(aTarget);
  TriggerElementActivation();
}
void
ActiveElementManager::SetTargetElement(dom::EventTarget* aTarget)
{
  if (mTarget) {
    // Multiple fingers on screen (since HandleTouchEnd clears mTarget).
    AEM_LOG("Multiple fingers on-screen, clearing target element\n");
    CancelTask();
    ResetActive();
    ResetTouchBlockState();
    return;
  }

  mTarget = do_QueryInterface(aTarget);
  AEM_LOG("Setting target element to %p\n", mTarget.get());
  TriggerElementActivation();
}
void
ActiveElementManager::HandleTouchStart(bool aCanBePan)
{
  AEM_LOG("Touch start, aCanBePan: %d\n", aCanBePan);
  if (mCanBePanSet) {
    // Multiple fingers on screen (since HandleTouchEnd clears mCanBePanSet).
    AEM_LOG("Multiple fingers on-screen, clearing touch block state\n");
    CancelTask();
    ResetActive();
    ResetTouchBlockState();
    return;
  }

  mCanBePan = aCanBePan;
  mCanBePanSet = true;
  TriggerElementActivation();
}
void
ActiveElementManager::HandleTouchEnd(bool aWasClick)
{
  AEM_LOG("Touch end, aWasClick: %d\n", aWasClick);

  // If the touch was a click, make mTarget :active right away.
  // nsEventStateManager will reset the active element when processing
  // the mouse-down event generated by the click.
  CancelTask();
  if (aWasClick) {
    SetActive(mTarget);
  } else {
    // We might reach here if mCanBePan was false on touch-start and
    // so we set the element active right away. Now it turns out the
    // action was not a click so we need to reset the active element.
    ResetActive();
  }

  ResetTouchBlockState();
}
void DigitallyImportedUrlHandler::LoadPlaylistFinished(QIODevice* device) {
  if (task_id_ == -1) {
    return;
  }

  // Stop the spinner in the status bar
  CancelTask();

  // Try to parse the playlist
  PlaylistParser parser(nullptr);
  QList<Song> songs = parser.LoadFromDevice(device);

  qLog(Info) << "Loading station finished, got" << songs.count() << "songs";

  // Failed to get playlist?
  if (songs.count() == 0) {
    service_->StreamError(tr("Error loading di.fm playlist"));
    return;
  }

  emit AsyncLoadComplete(LoadResult(
      last_original_url_, LoadResult::TrackAvailable, songs[0].url()));
}