aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglprogram.rs
diff options
context:
space:
mode:
authorSaurav Sachidanand <sauravsachidanand@gmail.com>2016-04-06 17:59:43 +0530
committerSaurav Sachidanand <sauravsachidanand@gmail.com>2016-04-06 20:02:45 +0530
commit56eef10718dfb8c43430c58c0a236fae1d11b5bc (patch)
treeb71e34fdbf850f8ee100ead4dff3898d77ee299a /components/script/dom/webglprogram.rs
parenta9eb08dbaa5a9f394aa6c3e563796658826a83b3 (diff)
downloadservo-56eef10718dfb8c43430c58c0a236fae1d11b5bc.tar.gz
servo-56eef10718dfb8c43430c58c0a236fae1d11b5bc.zip
Implement WebGLRenderingContext.getActiveUniform()
Diffstat (limited to 'components/script/dom/webglprogram.rs')
-rw-r--r--components/script/dom/webglprogram.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs
index 378039b03eb..996e6eb4cee 100644
--- a/components/script/dom/webglprogram.rs
+++ b/components/script/dom/webglprogram.rs
@@ -8,7 +8,8 @@ use dom::bindings::codegen::Bindings::WebGLProgramBinding;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
-use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::reflector::{Reflectable, reflect_dom_object};
+use dom::webglactiveinfo::WebGLActiveInfo;
use dom::webglobject::WebGLObject;
use dom::webglrenderingcontext::MAX_UNIFORM_AND_ATTRIBUTE_LEN;
use dom::webglshader::WebGLShader;
@@ -156,6 +157,16 @@ impl WebGLProgram {
Ok(())
}
+ pub fn get_active_uniform(&self, index: u32) -> WebGLResult<Root<WebGLActiveInfo>> {
+ let (sender, receiver) = ipc::channel().unwrap();
+ self.renderer
+ .send(CanvasMsg::WebGL(WebGLCommand::GetActiveUniform(self.id, index, sender)))
+ .unwrap();
+
+ receiver.recv().unwrap().map(|(size, ty, name)|
+ WebGLActiveInfo::new(self.global().r(), size, ty, DOMString::from(name)))
+ }
+
/// glGetAttribLocation
pub fn get_attrib_location(&self, name: DOMString) -> WebGLResult<Option<i32>> {
if name.len() > MAX_UNIFORM_AND_ATTRIBUTE_LEN {