{"action":"created","issue":{"url":"https://api.github.com/repos/xbmc/xbmc/issues/9390","repository_url":"https://api.github.com/repos/xbmc/xbmc","labels_url":"https://api.github.com/repos/xbmc/xbmc/issues/9390/labels{/name}","comments_url":"https://api.github.com/repos/xbmc/xbmc/issues/9390/comments","events_url":"https://api.github.com/repos/xbmc/xbmc/issues/9390/events","html_url":"https://github.com/xbmc/xbmc/pull/9390","id":142048303,"number":9390,"title":"X11 and OpenGL(ES) renderer cleanup","user":{"login":"MaxKellermann","id":1443144,"avatar_url":"https://avatars.githubusercontent.com/u/1443144?v=3","gravatar_id":"","url":"https://api.github.com/users/MaxKellermann","html_url":"https://github.com/MaxKellermann","followers_url":"https://api.github.com/users/MaxKellermann/followers","following_url":"https://api.github.com/users/MaxKellermann/following{/other_user}","gists_url":"https://api.github.com/users/MaxKellermann/gists{/gist_id}","starred_url":"https://api.github.com/users/MaxKellermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MaxKellermann/subscriptions","organizations_url":"https://api.github.com/users/MaxKellermann/orgs","repos_url":"https://api.github.com/users/MaxKellermann/repos","events_url":"https://api.github.com/users/MaxKellermann/events{/privacy}","received_events_url":"https://api.github.com/users/MaxKellermann/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2016-03-19T10:00:33Z","updated_at":"2016-03-19T10:43:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/xbmc/xbmc/pulls/9390","html_url":"https://github.com/xbmc/xbmc/pull/9390","diff_url":"https://github.com/xbmc/xbmc/pull/9390.diff","patch_url":"https://github.com/xbmc/xbmc/pull/9390.patch"},"body":""},"comment":{"url":"https://api.github.com/repos/xbmc/xbmc/issues/comments/198681787","html_url":"https://github.com/xbmc/xbmc/pull/9390#issuecomment-198681787","issue_url":"https://api.github.com/repos/xbmc/xbmc/issues/9390","id":198681787,"user":{"login":"MaxKellermann","id":1443144,"avatar_url":"https://avatars.githubusercontent.com/u/1443144?v=3","gravatar_id":"","url":"https://api.github.com/users/MaxKellermann","html_url":"https://github.com/MaxKellermann","followers_url":"https://api.github.com/users/MaxKellermann/followers","following_url":"https://api.github.com/users/MaxKellermann/following{/other_user}","gists_url":"https://api.github.com/users/MaxKellermann/gists{/gist_id}","starred_url":"https://api.github.com/users/MaxKellermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MaxKellermann/subscriptions","organizations_url":"https://api.github.com/users/MaxKellermann/orgs","repos_url":"https://api.github.com/users/MaxKellermann/repos","events_url":"https://api.github.com/users/MaxKellermann/events{/privacy}","received_events_url":"https://api.github.com/users/MaxKellermann/received_events","type":"User","site_admin":false},"created_at":"2016-03-19T10:43:51Z","updated_at":"2016-03-19T10:43:51Z","body":"No, I don't think that's true. Maybe I misunderstand completely how the C++ compiler works, but in my opinion, this technique is flawed and doesn't work at all. Why would the compiler process this override?\r\n\r\nFor example, there's CDVDVideoCodecFFmpeg::SetFilters() which calls m_processInfo.GetFallbackDeintMethod(). m_processInfo is a \"CProcessInfo&\". So \"m_processInfo.GetFallbackDeintMethod()\" will invoke CProcessInfo::GetFallbackDeintMethod(), without a vtable lookup - because it's not virtual.\r\n\r\nWhy on earth would the compiler replace CProcessInfo::GetFallbackDeintMethod() with CProcessInfoPi::GetFallbackDeintMethod()? How does the compiler at this point even know that class CProcessInfoPi exists? That doesn't make any sense for me. What if there are other overrides? Which one wins?\r\n\r\nCan you please point me to some documentation or description of this technique? If I'm wrong, I'd like to learn about this."}}