{"action":"created","comment":{"url":"https://api.github.com/repos/Rajawali/Rajawali/pulls/comments/85652041","pull_request_review_id":6357361,"id":85652041,"diff_hunk":"@@ -0,0 +1,131 @@\n+package c.org.rajawali3d.engine;\n+\n+import android.support.annotation.NonNull;\n+\n+/**\n+ * Interface to be implemented for managing the interaction between the rendering context and all\n+ * {@link RenderModel}s and {@link RenderView}s associated with it. Rarely, if ever, should user\n+ * code implement this interface.\n+ *\n+ * @author Jared Woolston (Jared.Woolston@gmail.com)\n+ */\n+public interface Engine {\n+\n+    /**\n+     * Fetches the Open GL ES major version of the EGL surface.\n+     *\n+     * @return {@code int} containing the major version number.\n+     */\n+    int getGLMajorVersion();\n+\n+    /**\n+     * Fetches the Open GL ES minor version of the EGL surface.\n+     *\n+     * @return {@code int} containing the minor version number.\n+     */\n+    int getGLMinorVersion();\n+\n+    /**\n+     * Checks if the calling thread is the GL thread this {@link Engine} is associated with.\n+     *\n+     * @return {@code true} if the calling thread is the GL thread.\n+     */\n+    boolean isGLThread();\n+\n+    /**\n+     * Initiates engine frame processing.\n+     * TODO What if alrteady started?\n+     */\n+    void startFrames();\n+\n+    /**\n+     * @return time in nanoseconds of most recent startFrames()\n+     */\n+    long getFramesStartTime();\n+\n+    /**\n+     * @return nanoseconds elapsed since most recent startFrames()\n+     */\n+    long getFramesElapsedTime();\n+\n+    /**\n+     * Stops engine frame processing.\n+     *\n+     * @return {@code true} if frames were started/running,\n+     *          {@code false} if already stopped (no action taken)\n+     */\n+    boolean stopFrames();\n+\n+    /**\n+     *\n+     */\n+    interface SurfaceCallback {\n+\n+        /**\n+         * Notifies the client that the render surface dimensions have changed.\n+         *\n+         * @param width\n+         * @param height\n+         */\n+        void onSurfaceSizeChanged(int width, int height);\n+    }\n+\n+    void addSurfaceCallback(SurfaceCallback callback);\n+\n+    void removeSurfaceCallback(SurfaceCallback callback);\n+\n+    /**\n+     * Retrieves the overall surface width in pixels.\n+     *\n+     * @return {@code int} The surface width in pixels.\n+     */\n+    int getSurfaceWidth();\n+\n+    /**\n+     * Retrieves the overall surface height in pixels.\n+     *\n+     * @return {@code int} The surface height in pixels.\n+     */\n+    int getSurfaceHeight();\n+\n+    /**\n+     * Registers a {@link RenderView} with the {@link Engine}. The {@link RenderView} will be\n+     * notified of the new context and is expected to take any actions it needs to. There is no\n+     * guarantee this notification will occur on the GL thread so GL context tasks must be queued\n+     * by the {@link RenderView}.\n+     *\n+     * @param renderModel The {@link RenderModel} object to register.\n+     */\n+    void addRenderModel(@NonNull RenderModel renderModel);\n+\n+    /**\n+     * Unregisters a {@link RenderView} from the {@link Engine}. The {@link RenderView} will be","path":"rajawali/src/main/java/c/org/rajawali3d/engine/Engine.java","position":102,"original_position":102,"commit_id":"fde77361b4dd07d4e933479e94c22ce0f9401a29","original_commit_id":"fde77361b4dd07d4e933479e94c22ce0f9401a29","user":{"login":"rpicolet","id":616858,"avatar_url":"https://avatars.githubusercontent.com/u/616858?v=3","gravatar_id":"","url":"https://api.github.com/users/rpicolet","html_url":"https://github.com/rpicolet","followers_url":"https://api.github.com/users/rpicolet/followers","following_url":"https://api.github.com/users/rpicolet/following{/other_user}","gists_url":"https://api.github.com/users/rpicolet/gists{/gist_id}","starred_url":"https://api.github.com/users/rpicolet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpicolet/subscriptions","organizations_url":"https://api.github.com/users/rpicolet/orgs","repos_url":"https://api.github.com/users/rpicolet/repos","events_url":"https://api.github.com/users/rpicolet/events{/privacy}","received_events_url":"https://api.github.com/users/rpicolet/received_events","type":"User","site_admin":false},"body":"Yep","created_at":"2016-10-30T02:46:12Z","updated_at":"2016-10-30T02:46:12Z","html_url":"https://github.com/Rajawali/Rajawali/pull/1802#discussion_r85652041","pull_request_url":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802","_links":{"self":{"href":"https://api.github.com/repos/Rajawali/Rajawali/pulls/comments/85652041"},"html":{"href":"https://github.com/Rajawali/Rajawali/pull/1802#discussion_r85652041"},"pull_request":{"href":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802"}}},"pull_request":{"url":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802","id":91301996,"html_url":"https://github.com/Rajawali/Rajawali/pull/1802","diff_url":"https://github.com/Rajawali/Rajawali/pull/1802.diff","patch_url":"https://github.com/Rajawali/Rajawali/pull/1802.patch","issue_url":"https://api.github.com/repos/Rajawali/Rajawali/issues/1802","number":1802,"state":"open","locked":false,"title":"WIP: Proposed changes to render structure","user":{"login":"rpicolet","id":616858,"avatar_url":"https://avatars.githubusercontent.com/u/616858?v=3","gravatar_id":"","url":"https://api.github.com/users/rpicolet","html_url":"https://github.com/rpicolet","followers_url":"https://api.github.com/users/rpicolet/followers","following_url":"https://api.github.com/users/rpicolet/following{/other_user}","gists_url":"https://api.github.com/users/rpicolet/gists{/gist_id}","starred_url":"https://api.github.com/users/rpicolet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpicolet/subscriptions","organizations_url":"https://api.github.com/users/rpicolet/orgs","repos_url":"https://api.github.com/users/rpicolet/repos","events_url":"https://api.github.com/users/rpicolet/events{/privacy}","received_events_url":"https://api.github.com/users/rpicolet/received_events","type":"User","site_admin":false},"body":"Review-only, do not pull/merge.\r\n\r\nNot sure how much to write here.  Created a v2.0-engine branch, since everything here is engine-framework stuff; no multipass yet.\r\n\r\nFairly aggressive with refactoring/re-naming, trying to promote a clear distinction between frame-management and rendering views, and between models and views.\r\n\r\nAll feedback welcome!  ","created_at":"2016-10-27T23:59:01Z","updated_at":"2016-10-30T02:46:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":{"login":"jwoolston","id":2993125,"avatar_url":"https://avatars.githubusercontent.com/u/2993125?v=3","gravatar_id":"","url":"https://api.github.com/users/jwoolston","html_url":"https://github.com/jwoolston","followers_url":"https://api.github.com/users/jwoolston/followers","following_url":"https://api.github.com/users/jwoolston/following{/other_user}","gists_url":"https://api.github.com/users/jwoolston/gists{/gist_id}","starred_url":"https://api.github.com/users/jwoolston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwoolston/subscriptions","organizations_url":"https://api.github.com/users/jwoolston/orgs","repos_url":"https://api.github.com/users/jwoolston/repos","events_url":"https://api.github.com/users/jwoolston/events{/privacy}","received_events_url":"https://api.github.com/users/jwoolston/received_events","type":"User","site_admin":false},"assignees":[{"login":"jwoolston","id":2993125,"avatar_url":"https://avatars.githubusercontent.com/u/2993125?v=3","gravatar_id":"","url":"https://api.github.com/users/jwoolston","html_url":"https://github.com/jwoolston","followers_url":"https://api.github.com/users/jwoolston/followers","following_url":"https://api.github.com/users/jwoolston/following{/other_user}","gists_url":"https://api.github.com/users/jwoolston/gists{/gist_id}","starred_url":"https://api.github.com/users/jwoolston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwoolston/subscriptions","organizations_url":"https://api.github.com/users/jwoolston/orgs","repos_url":"https://api.github.com/users/jwoolston/repos","events_url":"https://api.github.com/users/jwoolston/events{/privacy}","received_events_url":"https://api.github.com/users/jwoolston/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/Rajawali/Rajawali/milestones/3","html_url":"https://github.com/Rajawali/Rajawali/milestones/v2.0,%20Camden%20Hells","labels_url":"https://api.github.com/repos/Rajawali/Rajawali/milestones/3/labels","id":1054895,"number":3,"title":"v2.0, Camden Hells","description":"Fundamental redesign of the library. Scene graphs are an integral feature.","creator":{"login":"jwoolston","id":2993125,"avatar_url":"https://avatars.githubusercontent.com/u/2993125?v=3","gravatar_id":"","url":"https://api.github.com/users/jwoolston","html_url":"https://github.com/jwoolston","followers_url":"https://api.github.com/users/jwoolston/followers","following_url":"https://api.github.com/users/jwoolston/following{/other_user}","gists_url":"https://api.github.com/users/jwoolston/gists{/gist_id}","starred_url":"https://api.github.com/users/jwoolston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwoolston/subscriptions","organizations_url":"https://api.github.com/users/jwoolston/orgs","repos_url":"https://api.github.com/users/jwoolston/repos","events_url":"https://api.github.com/users/jwoolston/events{/privacy}","received_events_url":"https://api.github.com/users/jwoolston/received_events","type":"User","site_admin":false},"open_issues":43,"closed_issues":1,"state":"open","created_at":"2015-04-06T18:29:11Z","updated_at":"2016-10-28T05:54:23Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802/commits","review_comments_url":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802/comments","review_comment_url":"https://api.github.com/repos/Rajawali/Rajawali/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Rajawali/Rajawali/issues/1802/comments","statuses_url":"https://api.github.com/repos/Rajawali/Rajawali/statuses/fde77361b4dd07d4e933479e94c22ce0f9401a29","head":{"label":"rpicolet:v2.0-engine","ref":"v2.0-engine","sha":"fde77361b4dd07d4e933479e94c22ce0f9401a29","user":{"login":"rpicolet","id":616858,"avatar_url":"https://avatars.githubusercontent.com/u/616858?v=3","gravatar_id":"","url":"https://api.github.com/users/rpicolet","html_url":"https://github.com/rpicolet","followers_url":"https://api.github.com/users/rpicolet/followers","following_url":"https://api.github.com/users/rpicolet/following{/other_user}","gists_url":"https://api.github.com/users/rpicolet/gists{/gist_id}","starred_url":"https://api.github.com/users/rpicolet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpicolet/subscriptions","organizations_url":"https://api.github.com/users/rpicolet/orgs","repos_url":"https://api.github.com/users/rpicolet/repos","events_url":"https://api.github.com/users/rpicolet/events{/privacy}","received_events_url":"https://api.github.com/users/rpicolet/received_events","type":"User","site_admin":false},"repo":{"id":53214723,"name":"Rajawali","full_name":"rpicolet/Rajawali","owner":{"login":"rpicolet","id":616858,"avatar_url":"https://avatars.githubusercontent.com/u/616858?v=3","gravatar_id":"","url":"https://api.github.com/users/rpicolet","html_url":"https://github.com/rpicolet","followers_url":"https://api.github.com/users/rpicolet/followers","following_url":"https://api.github.com/users/rpicolet/following{/other_user}","gists_url":"https://api.github.com/users/rpicolet/gists{/gist_id}","starred_url":"https://api.github.com/users/rpicolet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpicolet/subscriptions","organizations_url":"https://api.github.com/users/rpicolet/orgs","repos_url":"https://api.github.com/users/rpicolet/repos","events_url":"https://api.github.com/users/rpicolet/events{/privacy}","received_events_url":"https://api.github.com/users/rpicolet/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rpicolet/Rajawali","description":"Android OpenGL ES 2.0/3.0 Engine","fork":true,"url":"https://api.github.com/repos/rpicolet/Rajawali","forks_url":"https://api.github.com/repos/rpicolet/Rajawali/forks","keys_url":"https://api.github.com/repos/rpicolet/Rajawali/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rpicolet/Rajawali/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rpicolet/Rajawali/teams","hooks_url":"https://api.github.com/repos/rpicolet/Rajawali/hooks","issue_events_url":"https://api.github.com/repos/rpicolet/Rajawali/issues/events{/number}","events_url":"https://api.github.com/repos/rpicolet/Rajawali/events","assignees_url":"https://api.github.com/repos/rpicolet/Rajawali/assignees{/user}","branches_url":"https://api.github.com/repos/rpicolet/Rajawali/branches{/branch}","tags_url":"https://api.github.com/repos/rpicolet/Rajawali/tags","blobs_url":"https://api.github.com/repos/rpicolet/Rajawali/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rpicolet/Rajawali/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rpicolet/Rajawali/git/refs{/sha}","trees_url":"https://api.github.com/repos/rpicolet/Rajawali/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rpicolet/Rajawali/statuses/{sha}","languages_url":"https://api.github.com/repos/rpicolet/Rajawali/languages","stargazers_url":"https://api.github.com/repos/rpicolet/Rajawali/stargazers","contributors_url":"https://api.github.com/repos/rpicolet/Rajawali/contributors","subscribers_url":"https://api.github.com/repos/rpicolet/Rajawali/subscribers","subscription_url":"https://api.github.com/repos/rpicolet/Rajawali/subscription","commits_url":"https://api.github.com/repos/rpicolet/Rajawali/commits{/sha}","git_commits_url":"https://api.github.com/repos/rpicolet/Rajawali/git/commits{/sha}","comments_url":"https://api.github.com/repos/rpicolet/Rajawali/comments{/number}","issue_comment_url":"https://api.github.com/repos/rpicolet/Rajawali/issues/comments{/number}","contents_url":"https://api.github.com/repos/rpicolet/Rajawali/contents/{+path}","compare_url":"https://api.github.com/repos/rpicolet/Rajawali/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rpicolet/Rajawali/merges","archive_url":"https://api.github.com/repos/rpicolet/Rajawali/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rpicolet/Rajawali/downloads","issues_url":"https://api.github.com/repos/rpicolet/Rajawali/issues{/number}","pulls_url":"https://api.github.com/repos/rpicolet/Rajawali/pulls{/number}","milestones_url":"https://api.github.com/repos/rpicolet/Rajawali/milestones{/number}","notifications_url":"https://api.github.com/repos/rpicolet/Rajawali/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rpicolet/Rajawali/labels{/name}","releases_url":"https://api.github.com/repos/rpicolet/Rajawali/releases{/id}","deployments_url":"https://api.github.com/repos/rpicolet/Rajawali/deployments","created_at":"2016-03-05T17:49:32Z","updated_at":"2016-03-05T17:49:34Z","pushed_at":"2016-10-27T23:44:54Z","git_url":"git://github.com/rpicolet/Rajawali.git","ssh_url":"git@github.com:rpicolet/Rajawali.git","clone_url":"https://github.com/rpicolet/Rajawali.git","svn_url":"https://github.com/rpicolet/Rajawali","homepage":"https://plus.google.com/u/0/communities/116529974266844528013","size":46518,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Rajawali:v2.0-development","ref":"v2.0-development","sha":"a8e85f4fa7ae3eff27109f260143634c88c71118","user":{"login":"Rajawali","id":3820125,"avatar_url":"https://avatars.githubusercontent.com/u/3820125?v=3","gravatar_id":"","url":"https://api.github.com/users/Rajawali","html_url":"https://github.com/Rajawali","followers_url":"https://api.github.com/users/Rajawali/followers","following_url":"https://api.github.com/users/Rajawali/following{/other_user}","gists_url":"https://api.github.com/users/Rajawali/gists{/gist_id}","starred_url":"https://api.github.com/users/Rajawali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rajawali/subscriptions","organizations_url":"https://api.github.com/users/Rajawali/orgs","repos_url":"https://api.github.com/users/Rajawali/repos","events_url":"https://api.github.com/users/Rajawali/events{/privacy}","received_events_url":"https://api.github.com/users/Rajawali/received_events","type":"Organization","site_admin":false},"repo":{"id":2011647,"name":"Rajawali","full_name":"Rajawali/Rajawali","owner":{"login":"Rajawali","id":3820125,"avatar_url":"https://avatars.githubusercontent.com/u/3820125?v=3","gravatar_id":"","url":"https://api.github.com/users/Rajawali","html_url":"https://github.com/Rajawali","followers_url":"https://api.github.com/users/Rajawali/followers","following_url":"https://api.github.com/users/Rajawali/following{/other_user}","gists_url":"https://api.github.com/users/Rajawali/gists{/gist_id}","starred_url":"https://api.github.com/users/Rajawali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rajawali/subscriptions","organizations_url":"https://api.github.com/users/Rajawali/orgs","repos_url":"https://api.github.com/users/Rajawali/repos","events_url":"https://api.github.com/users/Rajawali/events{/privacy}","received_events_url":"https://api.github.com/users/Rajawali/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Rajawali/Rajawali","description":"Android OpenGL ES 2.0/3.0 Engine","fork":false,"url":"https://api.github.com/repos/Rajawali/Rajawali","forks_url":"https://api.github.com/repos/Rajawali/Rajawali/forks","keys_url":"https://api.github.com/repos/Rajawali/Rajawali/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Rajawali/Rajawali/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Rajawali/Rajawali/teams","hooks_url":"https://api.github.com/repos/Rajawali/Rajawali/hooks","issue_events_url":"https://api.github.com/repos/Rajawali/Rajawali/issues/events{/number}","events_url":"https://api.github.com/repos/Rajawali/Rajawali/events","assignees_url":"https://api.github.com/repos/Rajawali/Rajawali/assignees{/user}","branches_url":"https://api.github.com/repos/Rajawali/Rajawali/branches{/branch}","tags_url":"https://api.github.com/repos/Rajawali/Rajawali/tags","blobs_url":"https://api.github.com/repos/Rajawali/Rajawali/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Rajawali/Rajawali/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Rajawali/Rajawali/git/refs{/sha}","trees_url":"https://api.github.com/repos/Rajawali/Rajawali/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Rajawali/Rajawali/statuses/{sha}","languages_url":"https://api.github.com/repos/Rajawali/Rajawali/languages","stargazers_url":"https://api.github.com/repos/Rajawali/Rajawali/stargazers","contributors_url":"https://api.github.com/repos/Rajawali/Rajawali/contributors","subscribers_url":"https://api.github.com/repos/Rajawali/Rajawali/subscribers","subscription_url":"https://api.github.com/repos/Rajawali/Rajawali/subscription","commits_url":"https://api.github.com/repos/Rajawali/Rajawali/commits{/sha}","git_commits_url":"https://api.github.com/repos/Rajawali/Rajawali/git/commits{/sha}","comments_url":"https://api.github.com/repos/Rajawali/Rajawali/comments{/number}","issue_comment_url":"https://api.github.com/repos/Rajawali/Rajawali/issues/comments{/number}","contents_url":"https://api.github.com/repos/Rajawali/Rajawali/contents/{+path}","compare_url":"https://api.github.com/repos/Rajawali/Rajawali/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Rajawali/Rajawali/merges","archive_url":"https://api.github.com/repos/Rajawali/Rajawali/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Rajawali/Rajawali/downloads","issues_url":"https://api.github.com/repos/Rajawali/Rajawali/issues{/number}","pulls_url":"https://api.github.com/repos/Rajawali/Rajawali/pulls{/number}","milestones_url":"https://api.github.com/repos/Rajawali/Rajawali/milestones{/number}","notifications_url":"https://api.github.com/repos/Rajawali/Rajawali/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Rajawali/Rajawali/labels{/name}","releases_url":"https://api.github.com/repos/Rajawali/Rajawali/releases{/id}","deployments_url":"https://api.github.com/repos/Rajawali/Rajawali/deployments","created_at":"2011-07-07T10:29:45Z","updated_at":"2016-10-28T09:58:52Z","pushed_at":"2016-10-28T14:15:27Z","git_url":"git://github.com/Rajawali/Rajawali.git","ssh_url":"git@github.com:Rajawali/Rajawali.git","clone_url":"https://github.com/Rajawali/Rajawali.git","svn_url":"https://github.com/Rajawali/Rajawali","homepage":"https://plus.google.com/u/0/communities/116529974266844528013","size":48132,"stargazers_count":1148,"watchers_count":1148,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":506,"mirror_url":null,"open_issues_count":112,"forks":506,"open_issues":112,"watchers":1148,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802"},"html":{"href":"https://github.com/Rajawali/Rajawali/pull/1802"},"issue":{"href":"https://api.github.com/repos/Rajawali/Rajawali/issues/1802"},"comments":{"href":"https://api.github.com/repos/Rajawali/Rajawali/issues/1802/comments"},"review_comments":{"href":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802/comments"},"review_comment":{"href":"https://api.github.com/repos/Rajawali/Rajawali/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Rajawali/Rajawali/pulls/1802/commits"},"statuses":{"href":"https://api.github.com/repos/Rajawali/Rajawali/statuses/fde77361b4dd07d4e933479e94c22ce0f9401a29"}}}}
{"actor":{"display_login":"rpicolet"}}