Merge "Remove unnecessary string operations."
diff --git a/rsFont.cpp b/rsFont.cpp
index 958ecb5..2a2c3b4 100644
--- a/rsFont.cpp
+++ b/rsFont.cpp
@@ -640,11 +640,9 @@
initVertexArrayBuffers();
// We store a string with letters in a rough frequency of occurrence
- mLatinPrecache = String8(" eisarntolcdugpmhbyfvkwzxjq");
- mLatinPrecache += String8("EISARNTOLCDUGPMHBYFVKWZXJQ");
- mLatinPrecache += String8(",.?!()-+@;:`'");
- mLatinPrecache += String8("0123456789");
-
+ mLatinPrecache = " eisarntolcdugpmhbyfvkwzxjq"
+ "EISARNTOLCDUGPMHBYFVKWZXJQ"
+ ",.?!()-+@;:`'0123456789";
mInitialized = true;
}
@@ -740,7 +738,8 @@
// Remaining capacity is measured in %
uint32_t remainingCapacity = getRemainingCacheCapacity();
uint32_t precacheIdx = 0;
- while (remainingCapacity > 25 && precacheIdx < mLatinPrecache.size()) {
+ const size_t l = strlen(mLatinPrecache);
+ while ((remainingCapacity > 25) && (precacheIdx < l)) {
font->getCachedUTFChar((int32_t)mLatinPrecache[precacheIdx]);
remainingCapacity = getRemainingCacheCapacity();
precacheIdx ++;
diff --git a/rsFont.h b/rsFont.h
index 8f43a2a..f7ad3cd 100644
--- a/rsFont.h
+++ b/rsFont.h
@@ -183,7 +183,7 @@
uint32_t getRemainingCacheCapacity();
void precacheLatin(Font *font);
- String8 mLatinPrecache;
+ const char *mLatinPrecache;
Context *mRSC;
diff --git a/rsProgramFragment.cpp b/rsProgramFragment.cpp
index f2885a9..fb00cd1 100644
--- a/rsProgramFragment.cpp
+++ b/rsProgramFragment.cpp
@@ -93,13 +93,14 @@
}
void ProgramFragmentState::init(Context *rsc) {
- String8 shaderString(RS_SHADER_INTERNAL);
- shaderString.append("varying lowp vec4 varColor;\n");
- shaderString.append("varying vec2 varTex0;\n");
- shaderString.append("void main() {\n");
- shaderString.append(" lowp vec4 col = UNI_Color;\n");
- shaderString.append(" gl_FragColor = col;\n");
- shaderString.append("}\n");
+ const char *shaderString =
+ RS_SHADER_INTERNAL
+ "varying lowp vec4 varColor;\n"
+ "varying vec2 varTex0;\n"
+ "void main() {\n"
+ " lowp vec4 col = UNI_Color;\n"
+ " gl_FragColor = col;\n"
+ "}\n";
ObjectBaseRef<const Element> colorElem = Element::createRef(rsc, RS_TYPE_FLOAT_32, RS_KIND_USER, false, 4);
Element::Builder builder;
@@ -114,7 +115,7 @@
Allocation *constAlloc = Allocation::createAllocation(rsc, inputType.get(),
RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS);
- ProgramFragment *pf = new ProgramFragment(rsc, shaderString.string(), shaderString.length(),
+ ProgramFragment *pf = new ProgramFragment(rsc, shaderString, strlen(shaderString),
NULL, 0, NULL, tmp, 2);
pf->bindAllocation(rsc, constAlloc, 0);
pf->setConstantColor(rsc, 1.0f, 1.0f, 1.0f, 1.0f);
diff --git a/rsProgramVertex.cpp b/rsProgramVertex.cpp
index 5265216..30000b0 100644
--- a/rsProgramVertex.cpp
+++ b/rsProgramVertex.cpp
@@ -190,15 +190,16 @@
ObjectBaseRef<Type> inputType = Type::getTypeRef(rsc, constInput.get(), 1, 0, 0, false, false, 0);
- String8 shaderString(RS_SHADER_INTERNAL);
- shaderString.append("varying vec4 varColor;\n");
- shaderString.append("varying vec2 varTex0;\n");
- shaderString.append("void main() {\n");
- shaderString.append(" gl_Position = UNI_MVP * ATTRIB_position;\n");
- shaderString.append(" gl_PointSize = 1.0;\n");
- shaderString.append(" varColor = ATTRIB_color;\n");
- shaderString.append(" varTex0 = ATTRIB_texture0;\n");
- shaderString.append("}\n");
+ const char *shaderString =
+ RS_SHADER_INTERNAL
+ "varying vec4 varColor;\n"
+ "varying vec2 varTex0;\n"
+ "void main() {\n"
+ " gl_Position = UNI_MVP * ATTRIB_position;\n"
+ " gl_PointSize = 1.0;\n"
+ " varColor = ATTRIB_color;\n"
+ " varTex0 = ATTRIB_texture0;\n"
+ "}\n";
uint32_t tmp[4];
tmp[0] = RS_PROGRAM_PARAM_CONSTANT;
@@ -206,7 +207,7 @@
tmp[2] = RS_PROGRAM_PARAM_INPUT;
tmp[3] = (uint32_t)attrElem.get();
- ProgramVertex *pv = new ProgramVertex(rsc, shaderString.string(), shaderString.length(),
+ ProgramVertex *pv = new ProgramVertex(rsc, shaderString, strlen(shaderString),
NULL, 0, NULL, tmp, 4);
Allocation *alloc = Allocation::createAllocation(rsc, inputType.get(),
RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS);