Exemplo n.º 1
0
 /* Unref() marks an object as detached from the event loop.  This is its
  * default state.  When an object with a "weak" reference changes from
  * attached to detached state it will be freed. Be careful not to access
  * the object after making this call as it might be gone!
  * (A "weak reference" means an object that only has a
  * persistant handle.)
  *
  * DO NOT CALL THIS FROM DESTRUCTOR
  */
 virtual void Unref() {
   assert(!persistent().IsEmpty());
   assert(!persistent().IsWeak());
   assert(refs_ > 0);
   if (--refs_ == 0)
     MakeWeak();
 }
Exemplo n.º 2
0
 virtual ~ObjectWrap() {
   if (persistent().IsEmpty())
     return;
   assert(persistent().IsNearDeath());
   persistent().ClearWeak();
   persistent().Dispose();
 }
Exemplo n.º 3
0
void JavaObject::wrap(Isolate* isolate, Local<Object> jsObject)
{
	ASSERT(persistent().IsEmpty());
	ASSERT(jsObject->InternalFieldCount() > 0);
	jsObject->SetAlignedPointerInInternalField(0, this);
	persistent().Reset(isolate, jsObject);
}
Exemplo n.º 4
0
 inline void Wrap(v8::Handle<v8::Object> handle) {
   assert(persistent().IsEmpty());
   assert(handle->InternalFieldCount() > 0);
   handle->SetAlignedPointerInInternalField(0, this);
   persistent().Reset(v8::Isolate::GetCurrent(), handle);
   MakeWeak();
 }
Exemplo n.º 5
0
void JavaObject::MakeJSWeak()
{
	// So we've stopped the JS object from being marked fully weak for GC.
	// Now, as an ugly hack, we mark this JS object as weak in a different way so taht V8 can tell us
	// when the JS object is ready to be GCed (the first step in it's death)
	// but this time, we say call us back as a finalizer so we can resurrect the
	// object (save it from really being GCd by V8) and move it's Java object twin
	// to a weak reference in the JVM. (where we can track when that gets GC'd by the JVM to call back and kill this)
	persistent().SetWeak(this, DetachCallback, v8::WeakCallbackType::kFinalizer); // MUST BE kFinalizer or our object cannot be resurrected!
	persistent().MarkIndependent();
}
Exemplo n.º 6
0
JavaObject::~JavaObject()
{
	UPDATE_STATS(-1, 0); // remove one from total counter

	// If we have anything wrapped, get rid of it in JNI/JVM
	if (javaObject_ || refTableKey_ != 0) {
		DeleteJavaRef();
	}

	// Make sure we wipe the persistent, in case we called delete on the proxy and didn't get deleted as a result of the NativeObject WeakCallback
	if (persistent().IsEmpty())
		return;
	persistent().Reset();
}
Exemplo n.º 7
0
JavaObject::~JavaObject()
{
	UPDATE_STATS(-1, isDetached() ? -1 : 0);

	if (javaObject_ || refTableKey_ > 0) {
		deleteGlobalRef();
	}

	if (persistent().IsEmpty())
		return;
	assert(persistent().IsNearDeath());
	persistent().ClearWeak();
	persistent().Reset();
}
Exemplo n.º 8
0
AAFRESULT STDMETHODCALLTYPE
    ImplAAFTimecodeStream::GetSize (aafLength_t *pSize)
{
  if (NULL == pSize)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;


  AAFRESULT result = AAFRESULT_SUCCESS;

  try
  {
    *pSize = _sourceStreamFilter->size();
  }
  //catch (OMException& ome)
  //{
  //}
  catch(...)
  {
    result = AAFRESULT_INTERNAL_ERROR;
  }

  return result;
}
Exemplo n.º 9
0
 AAFRESULT STDMETHODCALLTYPE
   ImplAAFTimecodeStream::Read (aafUInt32  bytes,
                           aafDataBuffer_t  buffer,
                           aafUInt32 *bytesRead)
{
  AAFRESULT result = AAFRESULT_SUCCESS;

  if (NULL == buffer || NULL == bytesRead)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;
  
  try
  {
    _sourceStreamFilter->read(buffer, bytes, *bytesRead);
    if (0 < bytes && 0 == *bytesRead)
      result = AAFRESULT_END_OF_DATA;
  }
  //catch (OMException& ome)
  //{
  //}
  catch(...)
  {
    result = AAFRESULT_INTERNAL_ERROR;
  }
  return result;
}
Exemplo n.º 10
0
// Attaches the Java object to this native wrapper.
// This wrapper will create a global reference to the
// Java object and keep it from becoming collected by Dalvik
// until it is detached or made weak (weakGlobalRef()).
void JavaObject::attach(jobject javaObject)
{
	ASSERT((javaObject && javaObject_ == NULL) || javaObject == NULL);
	UPDATE_STATS(0, -1);

	if (javaObject) {
		javaObject_ = javaObject;
	}
	// make strong ref to Java object in JVM
	newGlobalRef();

	// So let's mark this JS object as independent and weak so V8 can tell us
	// when the JS object is ready to be GCed, which is first step in it's death
	persistent().SetWeak(this, DetachCallback);
	persistent().MarkIndependent();
}
int main()
{

        double PixelHeight=(CyMax-CyMin)/iYmax;

        /* Minhas variáveis em memória */
        unsigned char *vetorR = (unsigned char *)malloc(iXmax * iYmax * sizeof(char));
        unsigned char *vetorG = (unsigned char *)malloc(iXmax * iYmax * sizeof(char));
        unsigned char *vetorB = (unsigned char *)malloc(iXmax * iYmax * sizeof(char));
        int inc = 0;

        void __attribute__((target(mic))) innerLoop(unsigned char *red, unsigned char *green, unsigned char *blue);
        #pragma offload target(mic) out(vetorR:length(iXmax * iYmax)) out(vetorG:length(iXmax * iYmax)) out(vetorB:length(iXmax * iYmax))
        for(iY=0;iY<iYmax;iY++)
        {
             Cy=CyMin + iY*PixelHeight;
             if (fabs(Cy)< PixelHeight/2) Cy=0.0; /* Main antenna */

             innerLoop(&vetorR[inc], &vetorG[inc], &vetorB[inc]);

             inc += iXmax;
        }

        /* write to the file */
        persistent(vetorR, vetorG, vetorB);
        return 0;
}
Exemplo n.º 12
0
AAFRESULT STDMETHODCALLTYPE
    ImplAAFTimecodeStream::GetPosition (aafPosition_t  *pOffset)
{
  AAFRESULT result = AAFRESULT_SUCCESS;

  if (NULL == pOffset)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;

  try
  {
    OMUInt64 tmpOffset;
    tmpOffset = _sourceStreamFilter->position();
    *pOffset = tmpOffset;
  }
  //catch (OMException& ome)
  //{
  //}
  catch(...)
  {
    result = AAFRESULT_INTERNAL_ERROR;
  }

  return result;
}
Exemplo n.º 13
0
tERROR cTmProfile::InitTask(tTaskRequestState state)
{
//	if( m_dad && m_dad->m_dad )
//		m_request->wait_for_parent_inited();

	cAutoCS locker(m_lock, true);

	if( m_remoteTask )
	{
		m_request->m_flags |= REQUEST_FLAG_SAME_TASKID;
	}
	else if( !(m_request->m_flags & REQUEST_FLAG_RESTART_TASK) )
	{
		m_timeStart = (tDWORD)cDateTime::now_utc();
		m_statistics.init(m_nSerIdStatistics);
		m_stateFlags &= ~dfTaskRestarted;
	}
	else
	{
		m_request->m_flags |= REQUEST_FLAG_SAME_TASKID;
		m_stateFlags |= dfTaskRestarted;
	}

	if( m_dad && !((m_request->m_flags & REQUEST_FLAG_SAME_TASKID) && m_nRuntimeId != TASKID_UNK) )
		m_nRuntimeId = m_tm->GetUniqueId();

	m_request->set_inited();

	m_lastErr = errOK;
	m_timeFinish = -1;
	m_client = !persistent() ? m_request->m_client : NULL;
	m_dieWithClient = !!(m_request->m_flags & OPEN_TASK_MODE_CLOSE_TASK_IF_OWNER_DIED);
	m_bImpersonated = cFALSE;

	if( (m_request->m_flags & REQUEST_FLAG_BY_SCHEDULE) || schedule().auto_mode() )
		SaveScheduledRun();

	tDWORD i, c = m_aReports.count();
	if( !m_dad || !c )
		return errOK;
	
	for(i = 0; i < c; ++i)
	{
		cTaskReportDsc& dsc = m_aReports[i];

		tCHAR buff[MAX_PATH];
		if( dsc.m_id.empty() || !dsc.m_id.compare("sys") )
			pr_sprintf(buff, sizeof(buff), "%04x_%S.rpt", m_nRuntimeId, m_sName.data());
		else
			pr_sprintf(buff, sizeof(buff), "%04x_%S_%S.rpt", m_nRuntimeId, m_sName.data(), dsc.m_id.data());
		dsc.m_name = buff;
	}
	return errOK;
}
Exemplo n.º 14
0
AAFRESULT STDMETHODCALLTYPE
    ImplAAFEssenceData::SetSampleIndexPosition (aafPosition_t  offset)
{
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;

  OMUInt64 tmpOffset = offset;
  _indexData.setPosition(tmpOffset);

  return AAFRESULT_SUCCESS;
}
Exemplo n.º 15
0
//-----------------------------------------------------------------------------
QList<QPersistentModelIndex> ctkCheckableComboBoxPrivate
::modelIndexesToPersistentIndexes(const QModelIndexList& indexes)const
{
  QList<QPersistentModelIndex> res;
  foreach(const QModelIndex& index, indexes)
    {
    QPersistentModelIndex persistent(index);
    if (persistent.isValid())
      {
      res << persistent;
      }
    }
Exemplo n.º 16
0
AAFRESULT STDMETHODCALLTYPE
    ImplAAFEssenceData::GetSampleIndexSize (aafLength_t *pSize)
{
  if (NULL == pSize)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;

  *pSize = _indexData.size();

  return AAFRESULT_SUCCESS;
}
Exemplo n.º 17
0
void JavaObject::detach()
{
	// WAIT A SECOND V8!!! DON'T KILL MY OBJECT YET! THE JVM MAY STILL WANT IT!
	persistent().ClearWeak();

	if (isDetached()) {
		return;
	}

	// V8 says we don't need the object on the JS side
	// Let's make the object weak in the JVM now...
	UPDATE_STATS(0, 1);
	weakGlobalRef();
}
Exemplo n.º 18
0
void JavaObject::detach()
{
	// WAIT A SECOND V8!!! DON'T KILL MY OBJECT YET! THE JVM MAY STILL WANT IT!
	persistent().ClearWeak(); // Make JS Strong Again!

	// if the JVM side is a weak reference or we have no object wrapped, don't do anything else
	if (isDetached()) {
		return;
	}

	// V8 says we don't need the object on the JS side
	// Let's make the object weak in the JVM now...
	MakeJavaWeak();
}
Exemplo n.º 19
0
// Returns a global reference to the wrapped Java object.
// If the object has become "detached" this will re-attach
// it to ensure the Java object will not get collected.
jobject JavaObject::getJavaObject()
{
	if (useGlobalRefs) {
		ASSERT(javaObject_ != NULL);

		// We must always return a valid Java proxy reference.
		// Otherwise we risk crashing in the calling code.
		// If we are "detached" we will re-attach whenever the Java
		// proxy is requested.
		if (isDetached()) {
			attach(NULL);
		}

		return javaObject_;
	} else {
		if (isWeakRef_) { // Did JS side try to collect our object already?
			// OH SNAP, DON'T KILL OUR OBJECT YET JVM!
			// make reference strong again on Java side if we can...
			jobject javaObject = ReferenceTable::clearWeakReference(refTableKey_);
			UPDATE_STATS(0, -1);
			if (javaObject == NULL) {
				// SHIT! Java collected it. ummmm, not much we can do here.
				// Maybe we can... Nope. It's gone. Live with it.
				LOGE(TAG, "Java object reference has been invalidated.");
			}

			isWeakRef_ = false; // not weak on Java side anymore

			// tell V8 to let us know when it thinks the JS object can be collected again
			persistent().SetWeak(this, DetachCallback);
			persistent().MarkIndependent();

			return javaObject;
		}
		return ReferenceTable::getReference(refTableKey_);
	}
}
Exemplo n.º 20
0
AAFRESULT STDMETHODCALLTYPE
    ImplAAFEssenceData::GetSampleIndexPosition (aafPosition_t  *pOffset)
{
  if (NULL == pOffset)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;

  OMUInt64 tmpOffset;
  tmpOffset = _indexData.position();
  *pOffset = tmpOffset;

  return AAFRESULT_SUCCESS;
}
Exemplo n.º 21
0
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::SetEssenceElementKey(
  aafUID_constref  key)
{
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;
  if (!_mediaData.hasEssenceElementKey())
      return AAFRESULT_OPERATION_NOT_PERMITTED;

  OMKLVKey klvKey;
  convert( klvKey,
           *reinterpret_cast<const OMUniqueObjectIdentification*>(&key) );
  _mediaData.setEssenceElementKey(klvKey);

  return AAFRESULT_SUCCESS;
}
Exemplo n.º 22
0
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::GetEssenceElementKey(
  aafUID_t * pEssenceElementKey)
{
  if (NULL == pEssenceElementKey)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;
  if (!_mediaData.hasEssenceElementKey())
      return AAFRESULT_OPERATION_NOT_PERMITTED;

  convert( *reinterpret_cast<OMUniqueObjectIdentification*>(pEssenceElementKey),
           _mediaData.essenceElementKey() );

  return AAFRESULT_SUCCESS;
}
Exemplo n.º 23
0
 AAFRESULT STDMETHODCALLTYPE
   ImplAAFEssenceData::ReadSampleIndex (aafUInt32  bytes,
                           aafDataBuffer_t  buffer,
                           aafUInt32 *bytesRead)
{
  if (NULL == buffer || NULL == bytesRead)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;
  
  _indexData.read(buffer, bytes, *bytesRead);
  if (0 < bytes && 0 == *bytesRead)
    return AAFRESULT_END_OF_DATA;

  return AAFRESULT_SUCCESS;
}
Exemplo n.º 24
0
 AAFRESULT STDMETHODCALLTYPE
   ImplAAFEssenceData::Write (aafUInt32  bytes,
                           aafDataBuffer_t buffer,
                           aafUInt32 *bytesWritten)
{
  if (NULL == buffer || NULL == bytesWritten)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;
  
  _mediaData.write(buffer, bytes, *bytesWritten);
  if (0 < bytes && 0 == *bytesWritten)
    return AAFRESULT_CONTAINERWRITE;

  return AAFRESULT_SUCCESS;
}
Exemplo n.º 25
0
AAFRESULT STDMETHODCALLTYPE ImplAAFRIFFChunk::SetPosition(
    aafPosition_t offset )
{
    if( !isInitialized() )
    {
        return AAFRESULT_NOT_INITIALIZED;
    }
    if( !persistent() )
    {
        return AAFRESULT_OBJECT_NOT_PERSISTENT;
    }


    OMUInt64  omPosition = offset;
    _chunkDataFilter->setPosition( omPosition );


    return AAFRESULT_SUCCESS;
}
Exemplo n.º 26
0
AAFRESULT STDMETHODCALLTYPE
    ImplAAFRIFFChunk::Read (
      aafUInt32  bytes,
      aafDataBuffer_t  buffer,
      aafUInt32 *  pBytesRead)
{
	
	if (NULL == buffer || NULL == pBytesRead)
    return AAFRESULT_NULL_PARAM;
  // Cannot access the data property if it is NOT associated with a file.
  if (!persistent())
    return AAFRESULT_OBJECT_NOT_PERSISTENT;
  
  _chunkDataFilter->read(buffer, bytes, *pBytesRead);
  if (0 < bytes && 0 == *pBytesRead)
    return AAFRESULT_END_OF_DATA;

  return AAFRESULT_SUCCESS;
	
}
Exemplo n.º 27
0
AAFRESULT STDMETHODCALLTYPE ImplAAFRIFFChunk::GetPosition(
    aafPosition_t*  pOffset )
{
    if( pOffset == 0 )
    {
        return AAFRESULT_NULL_PARAM;
    }
    if( !isInitialized() )
    {
        return AAFRESULT_NOT_INITIALIZED;
    }
    if( !persistent() )
    {
        return AAFRESULT_OBJECT_NOT_PERSISTENT;
    }


    OMUInt64  omPosition = _chunkDataFilter->position();
    *pOffset = omPosition;


    return AAFRESULT_SUCCESS;
}
Exemplo n.º 28
0
AAFRESULT STDMETHODCALLTYPE
    ImplAAFRIFFChunk::GetLength (
      aafLength_t *  pLength)
{
	if( pLength == NULL )
    {
        return AAFRESULT_NULL_PARAM;
    }
    if( !isInitialized() )
    {
        return AAFRESULT_NOT_INITIALIZED;
    }
    if( !persistent() )
    {
        return AAFRESULT_OBJECT_NOT_PERSISTENT;
    }


    OMUInt64  omSize = _chunkDataFilter->size();
	*pLength = omSize;


    return AAFRESULT_SUCCESS;
}
Exemplo n.º 29
0
 inline void MakeWeak(void) {
   persistent().MakeWeak(this, WeakCallback);
   persistent().MarkIndependent();
 }
Exemplo n.º 30
0
 /* Ref() marks the object as being attached to an event loop.
  * Refed objects will not be garbage collected, even if
  * all references are lost.
  */
 virtual void Ref() {
   assert(!persistent().IsEmpty());
   persistent().ClearWeak();
   refs_++;
 }