Esempio n. 1
0
        /// <summary>
        /// Handles removal of textures written to a memory region being unmapped.
        /// </summary>
        /// <param name="sender">Sender object</param>
        /// <param name="e">Event arguments</param>
        public void MemoryUnmappedHandler(object sender, UnmapEventArgs e)
        {
            Texture[] overlaps = new Texture[10];
            int       overlapCount;

            MultiRange unmapped = ((MemoryManager)sender).GetPhysicalRegions(e.Address, e.Size);

            lock (_textures)
            {
                overlapCount = _textures.FindOverlaps(unmapped, ref overlaps);
            }

            for (int i = 0; i < overlapCount; i++)
            {
                overlaps[i].Unmapped(unmapped);
            }

            // If any range was previously unmapped, we also need to purge
            // all partially mapped texture, as they might be fully mapped now.
            for (int i = 0; i < unmapped.Count; i++)
            {
                if (unmapped.GetSubRange(i).Address == MemoryManager.PteUnmapped)
                {
                    lock (_partiallyMappedTextures)
                    {
                        foreach (var texture in _partiallyMappedTextures)
                        {
                            texture.Unmapped(unmapped);
                        }
                    }

                    break;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Handles removal of textures written to a memory region being unmapped.
        /// </summary>
        /// <param name="sender">Sender object</param>
        /// <param name="e">Event arguments</param>
        public void MemoryUnmappedHandler(object sender, UnmapEventArgs e)
        {
            Texture[] overlaps = new Texture[10];
            int       overlapCount;

            MultiRange unmapped;

            try
            {
                unmapped = ((MemoryManager)sender).GetPhysicalRegions(e.Address, e.Size);
            }
            catch (InvalidMemoryRegionException)
            {
                // This event fires on Map in case any mappings are overwritten. In that case, there may not be an existing mapping.
                return;
            }

            lock (_textures)
            {
                overlapCount = _textures.FindOverlaps(unmapped, ref overlaps);
            }

            for (int i = 0; i < overlapCount; i++)
            {
                overlaps[i].Unmapped(unmapped);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Handles removal of textures written to a memory region being unmapped.
        /// </summary>
        /// <param name="sender">Sender object</param>
        /// <param name="e">Event arguments</param>
        public void MemoryUnmappedHandler(object sender, UnmapEventArgs e)
        {
            Texture[] overlaps = new Texture[10];
            int       overlapCount;

            lock (_textures)
            {
                overlapCount = _textures.FindOverlaps(_context.MemoryManager.Translate(e.Address), e.Size, ref overlaps);
            }

            for (int i = 0; i < overlapCount; i++)
            {
                overlaps[i].Unmapped();
            }
        }
Esempio n. 4
0
 internal void Socket_UnmapEvent(object o, UnmapEventArgs args)
 {
     Unmapped = true;
 }
Esempio n. 5
0
 void OnWindowClosed(object sender, UnmapEventArgs args)
 {
     //Parse the note to search for dates
     ScanNote();
 }
Esempio n. 6
0
 /// <summary>
 /// Memory mappings change event handler.
 /// </summary>
 /// <param name="sender">Memory manager where the mappings changed</param>
 /// <param name="e">Information about the region that is being changed</param>
 private void MemoryUnmappedHandler(object sender, UnmapEventArgs e)
 {
     TextureManager.ReloadPools();
 }
Esempio n. 7
0
 private void UnmapIt(object o, UnmapEventArgs args)
 {
     WindowIsVisible = false;
 }