Skip to content

Commit

Permalink
Refactor configureRenderService parameter. (cocos#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
dumganhar authored May 22, 2023
1 parent e48b0ee commit 26db7ab
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 29 deletions.
10 changes: 4 additions & 6 deletions native/render-service/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,17 +253,17 @@ public class CocosRemoteRenderClient {

/**
* 配置客户端要使用的渲染服务
* @param serviceName 渲染服务名称
* @param serviceFullClassName 渲染服务完整类名(包含包名)
* @param config 渲染服务的配置
*/
public void configureRenderService(String serviceName, String config)
public void configureRenderService(String serviceFullClassName, String config)

/**
* 配置客户端要使用的渲染服务,将使用默认的渲染服务配置
* @param serviceName 渲染服务名称
* @param serviceFullClassName 渲染服务完整类名(包含包名)
* @note 注意:此方法只在 start 方法被调用前才生效
*/
public void configureRenderService(String serviceName)
public void configureRenderService(String serviceFullClassName)

/**
* 获取当前渲染服务名称,业务可以自己配置自定义名称,比如:VPA、ADAS、ARHUD 等
Expand Down Expand Up @@ -452,7 +452,6 @@ public class MyVPA extends CocosRemoteRenderServiceBase {
"version": 1,
"render_service_list": [
{
"name": "HelloCocosRenderService1",
"class_name": "com.cocos.game.CocosRemoteRenderService1",
"asset_dirs": ["/sdcard/HelloCocosRenderService/data"],
"configs": {
Expand All @@ -468,7 +467,6 @@ public class MyVPA extends CocosRemoteRenderServiceBase {
}
},
{
"name": "HelloCocosRenderService2",
"class_name": "com.cocos.game.CocosRemoteRenderService2",
"asset_dirs": ["/sdcard/HelloCocosRenderService/data"],
"configs": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
}

private CocosRemoteRenderClient createClient() {
// String serviceName = mClientList.size() % 2 == 0 ? "VPA" : "VPA2";
String serviceName = mClientList.size() % 2 == 0 ? "HelloCocosRenderService1" : "HelloCocosRenderService2";
String serviceName = mClientList.size() % 2 == 0 ? "com.cocos.game.CocosRemoteRenderService0" : "com.cocos.game.CocosRemoteRenderService1";
CocosRemoteRenderClient client = new CocosRemoteRenderClient(this);

// Set extra argument
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ public ICocosBinderFactory getFactory() {

private static BroadcastReceiver sEngineLifecycleReceiver;

private String mRenderServiceName;
private String mRenderServiceFullClassName;
private RenderServiceConfig.RenderServiceInfo mRenderServiceInfo;

private String mRenderServiceConfigName;
Expand Down Expand Up @@ -395,22 +395,22 @@ public int getClientId() {
/**
* 配置客户端要使用的渲染服务
*
* @param serviceName 渲染服务名称
* @param serviceFullClassName 渲染服务完整类名(包含包名)
* @param config 渲染服务的配置
*/
public void configureRenderService(String serviceName, String config) {
mRenderServiceName = serviceName;
public void configureRenderService(String serviceFullClassName, String config) {
mRenderServiceFullClassName = serviceFullClassName;
mRenderServiceConfigName = config;
}

/**
* 配置客户端要使用的渲染服务,将使用默认的渲染服务配置
*
* @param serviceName 渲染服务名称
* @param serviceFullClassName 渲染服务完整类名(包含包名)
* @note 注意:此方法只在 start 方法被调用前才生效
*/
public void configureRenderService(String serviceName) {
configureRenderService(serviceName, "default");
public void configureRenderService(String serviceFullClassName) {
configureRenderService(serviceFullClassName, "default");
}

/**
Expand All @@ -419,7 +419,7 @@ public void configureRenderService(String serviceName) {
* @return 当前渲染服务名称
*/
public String getRenderServiceName() {
return mRenderServiceName;
return mRenderServiceFullClassName;
}

/**
Expand Down Expand Up @@ -496,9 +496,9 @@ public boolean start() {
+ mIsViewTranslucent + ", mIsViewTouchEnabled=" + mIsViewTouchEnabled);

RenderServiceConfig.getInstance().init(Environment.getExternalStorageDirectory() + "/render-service-config.json");
mRenderServiceInfo = RenderServiceConfig.getInstance().getRenderServiceInfo(mRenderServiceName);
mRenderServiceInfo = RenderServiceConfig.getInstance().getRenderServiceInfo(mRenderServiceFullClassName);
if (mRenderServiceInfo == null) {
Log.e(TAG, "Could not find render service info: " + mRenderServiceName);
Log.e(TAG, "Could not find render service info: " + mRenderServiceFullClassName);
return false;
}

Expand Down Expand Up @@ -663,7 +663,7 @@ boolean isPaused() {

private boolean isReady() {
return mContext != null
&& !TextUtils.isEmpty(mRenderServiceName)
&& !TextUtils.isEmpty(mRenderServiceFullClassName)
&& !TextUtils.isEmpty(mRenderServiceConfigName);
}

Expand Down Expand Up @@ -743,9 +743,9 @@ public void onServiceConnected(ComponentName name, IBinder service) {
mIsBindingService.set(false);
mBinderFactory = ICocosBinderFactory.Stub.asInterface(service);

BinderFactoryInfo factoryInfo = sServiceNameBinderFactoryMap.get(mRenderServiceName);
BinderFactoryInfo factoryInfo = sServiceNameBinderFactoryMap.get(mRenderServiceFullClassName);
if (factoryInfo == null) {
sServiceNameBinderFactoryMap.put(mRenderServiceName, new BinderFactoryInfo(mBinderFactory));
sServiceNameBinderFactoryMap.put(mRenderServiceFullClassName, new BinderFactoryInfo(mBinderFactory));
} else {
factoryInfo.addRef();
}
Expand Down Expand Up @@ -774,7 +774,7 @@ public void onServiceConnected(ComponentName name, IBinder service) {
tryStopAndDestroyRemoteRenderInstance();
try {
mBinderFactory.setClientOffscreenMode(mOnHardwareBufferListener != null);
mBinderFactory.setRenderServiceName(mRenderServiceName);
mBinderFactory.setRenderServiceName(mRenderServiceFullClassName);
mBinderFactory.setAssetDirs(mRenderServiceInfo.assetDirs);

if (mRenderServiceInfo.plugins != null) {
Expand Down Expand Up @@ -834,12 +834,12 @@ public void onNullBinding(ComponentName name) {
};

private void tryRemoveBinderFactory() {
BinderFactoryInfo factoryInfo = sServiceNameBinderFactoryMap.get(mRenderServiceName);
BinderFactoryInfo factoryInfo = sServiceNameBinderFactoryMap.get(mRenderServiceFullClassName);
if (factoryInfo != null) {
factoryInfo.release();
if (factoryInfo.getReferenceCount() == 0) {
Log.i(TAG, "All clients connected to (" + mRenderServiceName + ") are disconnected!");
sServiceNameBinderFactoryMap.remove(mRenderServiceName);
Log.i(TAG, "All clients connected to (" + mRenderServiceFullClassName + ") are disconnected!");
sServiceNameBinderFactoryMap.remove(mRenderServiceFullClassName);
}
} else {
Log.e(TAG, "Could not find factory");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ static class ConfigInfo {
}

static class RenderServiceInfo {
String name;
String className;
String[] assetDirs;
List<CocosPluginInfo> plugins;
Expand All @@ -60,7 +59,7 @@ public void init(String configPath) {
mJsonObject = readJsonFromFile(configPath);
}

public RenderServiceInfo getRenderServiceInfo(String serviceName) {
public RenderServiceInfo getRenderServiceInfo(String serviceFullClassName) {
if (mJsonObject == null) {
return null;
}
Expand All @@ -69,7 +68,7 @@ public RenderServiceInfo getRenderServiceInfo(String serviceName) {
JSONArray renderServiceList = mJsonObject.getJSONArray("render_service_list");
for (int i = 0, len = renderServiceList.length(); i < len; ++i) {
JSONObject config = renderServiceList.getJSONObject(i);
if (serviceName.equals(config.getString("name"))) {
if (serviceFullClassName.equals(config.getString("class_name"))) {
renderServiceConfig = config;
break;
}
Expand All @@ -83,7 +82,6 @@ public RenderServiceInfo getRenderServiceInfo(String serviceName) {
}

RenderServiceInfo info = new RenderServiceInfo();
info.name = serviceName;

try {
info.className = renderServiceConfig.getString("class_name");
Expand Down

0 comments on commit 26db7ab

Please sign in to comment.