From cae145e0c1df1b9e134cc62fa42799fcce5863e1 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 14 Nov 2015 23:44:50 -0800 Subject: [PATCH] [Renderer] Add RenderingSurface protocol The OpenGLView implements RenderingSurface and passes itself in the newly updated renderOntoSurface(_:atTime:) call. --- Renderer/OpenGL/OpenGLView.swift | 6 +++--- Renderer/Renderer/Renderer.swift | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Renderer/OpenGL/OpenGLView.swift b/Renderer/OpenGL/OpenGLView.swift index 45ffbb0..fc67520 100644 --- a/Renderer/OpenGL/OpenGLView.swift +++ b/Renderer/OpenGL/OpenGLView.swift @@ -11,15 +11,15 @@ import Cocoa import OpenGL import CoreVideo -public class OpenGLView: NSOpenGLView { +public class OpenGLView: NSOpenGLView, RenderingSurface { private var didSetupOpenGL = false private var displayLink: CVDisplayLink? = nil - // TODO: Should this be weak? public var renderer: FrameRenderer? = nil deinit { stopRenderingLoop() + renderer = nil } override public func awakeFromNib() { @@ -120,7 +120,7 @@ public class OpenGLView: NSOpenGLView { defer { CGLUnlockContext(context.CGLContextObj) } // Render the frame. - renderer!.renderAtTime(time) + renderer!.renderOntoSurface(self, atTime: time) context.flushBuffer() return kCVReturnSuccess diff --git a/Renderer/Renderer/Renderer.swift b/Renderer/Renderer/Renderer.swift index dd90b96..6ff792c 100644 --- a/Renderer/Renderer/Renderer.swift +++ b/Renderer/Renderer/Renderer.swift @@ -10,6 +10,10 @@ import CoreVideo public typealias FrameTimeStamp = CVTimeStamp +public protocol RenderingSurface { + var bounds: CGRect { get } +} + public protocol FrameRenderer { - func renderAtTime(time: FrameTimeStamp) + func renderOntoSurface(surface: RenderingSurface, atTime time: FrameTimeStamp) } \ No newline at end of file