             commandBuffer:commandBuffer,
             sourceTexture:sourceTexture,
             destinationTexture:destinationTexture)
-        commandBuffer.present(drawable)
-        commandBuffer.commit()
-        
-        super.draw()
     }
 }

    {
        guard
        
            let metalFitlerType:MetalFilter.Type = controller.viewHome.viewMenu.selectedItem?.filter,
            let drawable:CAMetalDrawable = currentDrawable,
            let sourceTexture:MTLTexture = controller.sourceTexture
        

        }
        
        let destinationTexture:MTLTexture = drawable.texture
        filterTexture(
            sourceTexture:sourceTexture,
            destinationTexture:destinationTexture)
        commandBuffer.present(drawable)
        commandBuffer.commit()
        
        super.draw()
    }
    
    //MARK: public
    
    func filterTexture(sourceTexture:MTLTexture, destinationTexture:MTLTexture)
    {
        guard
            
            let metalFitlerType:MetalFilter.Type = controller.viewHome.viewMenu.selectedItem?.filter
            
            else
        {
            return
        }
        
        let commandBuffer:MTLCommandBuffer = controller.commandQueue.makeCommandBuffer()
        let metalFilter:MetalFilter = metalFitlerType.init(device:controller.device)
        
