コード例 #1
0
ファイル: NptTime.cpp プロジェクト: Castlecard/plex
/*----------------------------------------------------------------------
|   NPT_TimeStamp::operator-
+---------------------------------------------------------------------*/
NPT_TimeStamp
operator-(const NPT_TimeStamp& timestamp, long seconds)
{
    // shortcut
    if (seconds == 0) return NPT_TimeStamp(timestamp);

    NPT_TimeStamp result = timestamp;
    result.m_Seconds -= seconds;

    return result;
}
コード例 #2
0
ファイル: PltStateVariable.cpp プロジェクト: 0xheart0/xbmc
/*----------------------------------------------------------------------
|   PLT_StateVariable::IsReadyToPublish
+---------------------------------------------------------------------*/
bool
PLT_StateVariable::IsReadyToPublish()
{
    NPT_TimeStamp now;
    NPT_System::GetCurrentTimeStamp(now);

    if (m_Rate == NPT_TimeStamp() || m_LastEvent + m_Rate <= now ) {
        m_LastEvent = now;
        return true;
    }

    return false;
}
コード例 #3
0
ファイル: PltThreadTask.cpp プロジェクト: 1c0n/xbmc
/*----------------------------------------------------------------------
|   PLT_ThreadTask::Start
+---------------------------------------------------------------------*/
NPT_Result
PLT_ThreadTask::Start(PLT_TaskManager*  task_manager,/* = NULL */
                      NPT_TimeInterval* delay,       /* = NULL */
                      bool              auto_destroy /* = true */)
{
    m_Abort.SetValue(0);
    m_AutoDestroy = auto_destroy;
    m_Delay       = delay?*delay:NPT_TimeStamp(0.);
    m_TaskManager = task_manager;
    
    if (m_TaskManager) {
        NPT_CHECK_SEVERE(m_TaskManager->AddTask(this));
        return NPT_SUCCESS;
    } else {
        return StartThread();
    }
}
コード例 #4
0
/*----------------------------------------------------------------------
|   PLT_MediaController::OnGetPositionInfoResponse
+---------------------------------------------------------------------*/
NPT_Result
PLT_MediaController::OnGetPositionInfoResponse(NPT_Result               res, 
                                               PLT_DeviceDataReference& device, 
                                               PLT_ActionReference&     action, 
                                               void*                    userdata)
{
    NPT_String       value;
    PLT_PositionInfo info;

    if (NPT_FAILED(res) || action->GetErrorCode() != 0) {
        goto bad_action;
    }

    if (NPT_FAILED(action->GetArgumentValue("Track", info.track))) {
        goto bad_action;
    }

    if (NPT_FAILED(action->GetArgumentValue("TrackDuration", value))) {
        goto bad_action;
    }
    if (NPT_FAILED(PLT_Didl::ParseTimeStamp(value, info.track_duration))) {
         // some renderers return garbage sometimes
		info.track_duration = NPT_TimeStamp(0.);
    }

    if (NPT_FAILED(action->GetArgumentValue("TrackMetaData", info.track_metadata))) {
        goto bad_action;
    }    
    
    if (NPT_FAILED(action->GetArgumentValue("TrackURI", info.track_uri))) {
        goto bad_action;
    }

    if (NPT_FAILED(action->GetArgumentValue("RelTime", value))) {
        goto bad_action;
    }

	// NOT_IMPLEMENTED is a valid value according to spec
	if (value != "NOT_IMPLEMENTED" && NPT_FAILED(PLT_Didl::ParseTimeStamp(value, info.rel_time))) {
		// some dogy renderers return garbage sometimes
		info.rel_time = NPT_TimeStamp(-1.0f);
    }

    if (NPT_FAILED(action->GetArgumentValue("AbsTime", value))) {
        goto bad_action;
    }
    
	// NOT_IMPLEMENTED is a valid value according to spec
	if (value != "NOT_IMPLEMENTED" && NPT_FAILED(PLT_Didl::ParseTimeStamp(value, info.abs_time))) {
		// some dogy renderers return garbage sometimes
		info.abs_time = NPT_TimeStamp(-1.0f);
    }

    if (NPT_FAILED(action->GetArgumentValue("RelCount", info.rel_count))) {
        goto bad_action;
    }    
    if (NPT_FAILED(action->GetArgumentValue("AbsCount", info.abs_count))) {
        goto bad_action;
    }

    m_Delegate->OnGetPositionInfoResult(NPT_SUCCESS, device, &info, userdata);
    return NPT_SUCCESS;

bad_action:
    m_Delegate->OnGetPositionInfoResult(NPT_FAILURE, device, NULL, userdata);
    return NPT_FAILURE;
}