bool wxRegConfig::DoReadBinary(const wxString& key, wxMemoryBuffer *buf) const { wxCHECK_MSG( buf, false, wxT("wxRegConfig::Read(): NULL param") ); wxConfigPathChanger path(this, key); bool bQueryGlobal = true; // if immutable key exists in global key we must check that it's not // overriden by the local key with the same name if ( IsImmutable(path.Name()) ) { if ( TryGetValue(m_keyGlobal, path.Name(), *buf) ) { if ( m_keyLocal.Exists() && LocalKey().HasValue(path.Name()) ) { wxLogWarning(wxT("User value for immutable key '%s' ignored."), path.Name().c_str()); } return true; } else { // don't waste time - it's not there anyhow bQueryGlobal = false; } } // first try local key if ( (m_keyLocal.Exists() && TryGetValue(LocalKey(), path.Name(), *buf)) || (bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), *buf)) ) { return true; } return false; }
bool BufferTextureClient::UpdateYCbCr(const PlanarYCbCrData& aData) { MOZ_ASSERT(mFormat == gfx::FORMAT_YUV, "This textureClient can only use YCbCr data"); MOZ_ASSERT(!IsImmutable()); MOZ_ASSERT(IsValid()); MOZ_ASSERT(aData.mCbSkip == aData.mCrSkip); YCbCrImageDataSerializer serializer(GetBuffer()); MOZ_ASSERT(serializer.IsValid()); if (!serializer.CopyData(aData.mYChannel, aData.mCbChannel, aData.mCrChannel, aData.mYSize, aData.mYStride, aData.mCbCrSize, aData.mCbCrStride, aData.mYSkip, aData.mCbSkip)) { NS_WARNING("Failed to copy image data!"); return false; } if (TextureRequiresLocking(mFlags)) { // We don't have support for proper locking yet, so we'll // have to be immutable instead. MarkImmutable(); } return true; }
bool BufferTextureClient::UpdateSurface(gfxASurface* aSurface) { MOZ_ASSERT(aSurface); MOZ_ASSERT(!IsImmutable()); MOZ_ASSERT(IsValid()); ImageDataSerializer serializer(GetBuffer()); if (!serializer.IsValid()) { return false; } RefPtr<gfxImageSurface> surf = serializer.GetAsThebesSurface(); if (!surf) { return false; } nsRefPtr<gfxContext> tmpCtx = new gfxContext(surf.get()); tmpCtx->SetOperator(gfxContext::OPERATOR_SOURCE); tmpCtx->DrawSurface(aSurface, gfxSize(serializer.GetSize().width, serializer.GetSize().height)); if (TextureRequiresLocking(mFlags) && !ImplementsLocking()) { // We don't have support for proper locking yet, so we'll // have to be immutable instead. MarkImmutable(); } return true; }
bool WebGLTexture::IsMipmapRangeValid() const { // In ES3, if a texture is immutable, the mipmap levels are clamped. if (IsImmutable()) return true; if (mBaseMipmapLevel > std::min(mMaxLevelWithCustomImages, mMaxMipmapLevel)) return false; return true; }
bool wxRegConfig::DoWriteBinary(const wxString& key, const wxMemoryBuffer& buf) { wxConfigPathChanger path(this, key); if ( IsImmutable(path.Name()) ) { wxLogError(wxT("Can't change immutable entry '%s'."), path.Name().c_str()); return false; } return LocalKey().SetValue(path.Name(), buf); }
bool wxRegConfig::DoWriteLong(const wxString& key, long lValue) { wxConfigPathChanger path(this, key); if ( IsImmutable(path.Name()) ) { wxLogError(wxT("Can't change immutable entry '%s'."), path.Name().c_str()); return false; } return LocalKey().SetValue(path.Name(), lValue); }
// second parameter is FALSE if we read the value from file and prevents the // entry from being marked as 'dirty' void ConfigEntry::SetValue(const wxString& strValue, bool bUser) { if ( bUser && IsImmutable() ) { wxLogWarning(_("attempt to change immutable key '%s' ignored."), Name().c_str()); return; } // do nothing if it's the same value if ( strValue == m_strValue ) return; m_strValue = strValue; if ( bUser ) { wxString strVal; if ( Group()->Config()->GetStyle() & wxCONFIG_USE_NO_ESCAPE_CHARACTERS ) { strVal = strValue; } else { strVal = FilterOutValue(strValue); } wxString strLine; strLine << FilterOutEntryName(m_strName) << wxT('=') << strVal; if ( m_pLine != NULL ) { // entry was read from the local config file, just modify the line m_pLine->SetText(strLine); } else { // add a new line to the file wxASSERT( m_nLine == wxNOT_FOUND ); // consistency check m_pLine = Group()->Config()->LineListInsert(strLine, Group()->GetLastEntryLine()); Group()->SetLastEntry(this); } SetDirty(); } }
bool BufferTextureClient::UpdateSurface(gfxASurface* aSurface) { MOZ_ASSERT(aSurface); MOZ_ASSERT(!IsImmutable()); MOZ_ASSERT(IsValid()); ImageDataSerializer serializer(GetBuffer()); if (!serializer.IsValid()) { return false; } if (gfxPlatform::GetPlatform()->SupportsAzureContent()) { RefPtr<DrawTarget> dt = serializer.GetAsDrawTarget(); RefPtr<SourceSurface> source = gfxPlatform::GetPlatform()->GetSourceSurfaceForSurface(dt, aSurface); dt->CopySurface(source, IntRect(IntPoint(), serializer.GetSize()), IntPoint()); } else { RefPtr<gfxImageSurface> surf = serializer.GetAsThebesSurface(); if (!surf) { return false; } nsRefPtr<gfxContext> tmpCtx = new gfxContext(surf.get()); tmpCtx->SetOperator(gfxContext::OPERATOR_SOURCE); tmpCtx->DrawSurface(aSurface, gfxSize(serializer.GetSize().width, serializer.GetSize().height)); } if (TextureRequiresLocking(mFlags) && !ImplementsLocking()) { // We don't have support for proper locking yet, so we'll // have to be immutable instead. MarkImmutable(); } return true; }