Skip to content

Commit

Permalink
Remove GameActivity dependency
Browse files Browse the repository at this point in the history
After switching to use ContentShellActivity, we can stop inheriting
Android activities from GameActivity.

ApplicationAndroid still have useful classes which we need to find
a good place to keep.

b/375669373
  • Loading branch information
johnxwork committed Oct 25, 2024
1 parent 4777ebd commit 0de9900
Show file tree
Hide file tree
Showing 7 changed files with 248 additions and 282 deletions.
70 changes: 16 additions & 54 deletions starboard/android/shared/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -17,42 +17,11 @@ import("//starboard/shared/starboard/media/media_tests.gni")
import("//starboard/shared/starboard/player/buildfiles.gni")
import("//starboard/shared/starboard/player/player_tests.gni")

##########################################################
# Configuration to extract GameActivity native files.
##########################################################

game_activity_aar_file = "//starboard/android/apk/app/src/main/java/dev/cobalt/libraries/game_activity/games-activity-2.0.2.aar"

game_activity_source_files = [
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-activity/GameActivity.cpp",
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-activity/GameActivity.h",
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-activity/GameActivityEvents.cpp",
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-activity/GameActivityEvents.h",
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-activity/GameActivityLog.h",
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-text-input/gamecommon.h",
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-text-input/gametextinput.cpp",
"$target_gen_dir/game_activity/prefab/modules/game-activity/include/game-text-input/gametextinput.h",
]

game_activity_include_dirs =
[ "$target_gen_dir/game_activity/prefab/modules/game-activity/include" ]

action("game_activity_sources") {
script = "//starboard/tools/unzip_file.py"
sources = [ game_activity_aar_file ]
outputs = game_activity_source_files
args = [
"--zip_file",
rebase_path(game_activity_aar_file, root_build_dir),
"--output_dir",
rebase_path(target_gen_dir, root_build_dir) + "/game_activity",
]
}

##########################################################
# Configuration for overall Android Starboard Platform.
##########################################################

# TODO(cobalt, b/375669373): re-enable API without ApplicationAndroid
static_library("starboard_platform") {
sources = [
"//starboard/shared/egl/system_egl.cc",
Expand Down Expand Up @@ -232,8 +201,9 @@ static_library("starboard_platform") {
"get_home_directory.cc",
"graphics.cc",
"graphics.h",
"input_events_generator.cc",
"input_events_generator.h",

#"input_events_generator.cc",
#"input_events_generator.h",
"jni_env_ext.cc",
"jni_env_ext.h",
"jni_utils.h",
Expand Down Expand Up @@ -288,10 +258,11 @@ static_library("starboard_platform") {
"posix_emu/stat.cc",
"sanitizer_options.cc",
"socket_get_interface_address.cc",
"speech_synthesis_cancel.cc",
"speech_synthesis_internal.cc",
"speech_synthesis_is_supported.cc",
"speech_synthesis_speak.cc",

#"speech_synthesis_cancel.cc",
#"speech_synthesis_internal.cc",
#"speech_synthesis_is_supported.cc",
#"speech_synthesis_speak.cc",
"system_get_extensions.cc",
"system_get_locale_id.cc",
"system_get_path.cc",
Expand All @@ -318,15 +289,15 @@ static_library("starboard_platform") {
"video_render_algorithm.h",
"video_window.cc",
"video_window.h",
"window_create.cc",
"window_destroy.cc",
"window_get_diagonal_size_in_inches.cc",
"window_get_platform_handle.cc",
"window_get_size.cc",
"window_internal.h",

#"window_create.cc",
#"window_destroy.cc",
#"window_get_diagonal_size_in_inches.cc",
#"window_get_platform_handle.cc",
#"window_get_size.cc",
#"window_internal.h",
]

sources += game_activity_source_files
sources += common_player_sources

sources -= [
Expand All @@ -338,12 +309,9 @@ static_library("starboard_platform") {
"//starboard/shared/starboard/player/player_set_playback_rate.cc",
]

include_dirs = game_activity_include_dirs

configs += [ "//starboard/build/config:starboard_implementation" ]

public_deps = [
":game_activity_sources",
":starboard_base_symbolize",
"//starboard/common",
"//starboard/shared/starboard/media:media_util",
Expand Down Expand Up @@ -378,12 +346,6 @@ static_library("starboard_platform") {
if (sb_evergreen_compatible_use_libunwind) {
deps += [ "//third_party/llvm-project/libunwind:unwind_starboard" ]
}

# Force-include atomic stl for game activity library.
cflags = [
"-include",
"atomic",
]
}

static_library("starboard_base_symbolize") {
Expand Down
196 changes: 98 additions & 98 deletions starboard/android/shared/android_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include <unistd.h>
#include <atomic>

#include "game-activity/GameActivity.h"
// #include "game-activity/GameActivity.h"
#include "starboard/android/shared/application_android.h"
#include "starboard/android/shared/jni_env_ext.h"
#include "starboard/android/shared/jni_utils.h"
Expand Down Expand Up @@ -249,103 +249,103 @@ void* ThreadEntryPoint(void* context) {
return NULL;
}

void OnStart(GameActivity* activity) {
if (g_app_running.load()) {
ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kStart);
}
}

void OnResume(GameActivity* activity) {
if (g_app_running.load()) {
ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kResume);
}
}

void OnPause(GameActivity* activity) {
if (g_app_running.load()) {
ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kPause);
}
}

void OnStop(GameActivity* activity) {
if (g_app_running.load()) {
ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kStop);
}
}

bool OnTouchEvent(GameActivity* activity,
const GameActivityMotionEvent* event) {
if (g_app_running.load()) {
return ApplicationAndroid::Get()->SendAndroidMotionEvent(event);
}
return false;
}

bool OnKey(GameActivity* activity, const GameActivityKeyEvent* event) {
if (g_app_running.load()) {
return ApplicationAndroid::Get()->SendAndroidKeyEvent(event);
}
return false;
}

void OnWindowFocusChanged(GameActivity* activity, bool focused) {
if (g_app_running.load()) {
ApplicationAndroid::Get()->SendAndroidCommand(
focused ? AndroidCommand::kWindowFocusGained
: AndroidCommand::kWindowFocusLost);
}
}

void OnNativeWindowCreated(GameActivity* activity, ANativeWindow* window) {
g_block_swapbuffers.store(false);
if (g_app_running.load()) {
ApplicationAndroid::Get()->SendAndroidCommand(
AndroidCommand::kNativeWindowCreated, window);
}
}

void OnNativeWindowDestroyed(GameActivity* activity, ANativeWindow* window) {
g_block_swapbuffers.store(true);
if (g_app_running.load()) {
ApplicationAndroid::Get()->SendAndroidCommand(
AndroidCommand::kNativeWindowDestroyed);
}
}

extern "C" SB_EXPORT_PLATFORM void GameActivity_onCreate(
GameActivity* activity,
void* savedState,
size_t savedStateSize) {
// Start the Starboard thread the first time an Activity is created.
if (g_starboard_thread == 0) {
Semaphore semaphore;

pthread_attr_t attributes;
pthread_attr_init(&attributes);
pthread_attr_setdetachstate(&attributes, PTHREAD_CREATE_DETACHED);

pthread_create(&g_starboard_thread, &attributes, &ThreadEntryPoint,
&semaphore);

pthread_attr_destroy(&attributes);

// Wait for the ApplicationAndroid to be created.
semaphore.Take();
}

activity->callbacks->onStart = OnStart;
activity->callbacks->onResume = OnResume;
activity->callbacks->onPause = OnPause;
activity->callbacks->onStop = OnStop;
activity->callbacks->onTouchEvent = OnTouchEvent;
activity->callbacks->onKeyDown = OnKey;
activity->callbacks->onKeyUp = OnKey;
activity->callbacks->onWindowFocusChanged = OnWindowFocusChanged;
activity->callbacks->onNativeWindowCreated = OnNativeWindowCreated;
activity->callbacks->onNativeWindowDestroyed = OnNativeWindowDestroyed;

activity->instance = ApplicationAndroid::Get();
}
// void OnStart(GameActivity* activity) {
// if (g_app_running.load()) {
// ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kStart);
// }
// }

// void OnResume(GameActivity* activity) {
// if (g_app_running.load()) {
// ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kResume);
// }
// }

// void OnPause(GameActivity* activity) {
// if (g_app_running.load()) {
// ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kPause);
// }
// }

// void OnStop(GameActivity* activity) {
// if (g_app_running.load()) {
// ApplicationAndroid::Get()->SendAndroidCommand(AndroidCommand::kStop);
// }
// }

// bool OnTouchEvent(GameActivity* activity,
// const GameActivityMotionEvent* event) {
// if (g_app_running.load()) {
// return ApplicationAndroid::Get()->SendAndroidMotionEvent(event);
// }
// return false;
// }

// bool OnKey(GameActivity* activity, const GameActivityKeyEvent* event) {
// if (g_app_running.load()) {
// return ApplicationAndroid::Get()->SendAndroidKeyEvent(event);
// }
// return false;
// }

// void OnWindowFocusChanged(GameActivity* activity, bool focused) {
// if (g_app_running.load()) {
// ApplicationAndroid::Get()->SendAndroidCommand(
// focused ? AndroidCommand::kWindowFocusGained
// : AndroidCommand::kWindowFocusLost);
// }
// }

// void OnNativeWindowCreated(GameActivity* activity, ANativeWindow* window) {
// g_block_swapbuffers.store(false);
// if (g_app_running.load()) {
// ApplicationAndroid::Get()->SendAndroidCommand(
// AndroidCommand::kNativeWindowCreated, window);
// }
// }

// void OnNativeWindowDestroyed(GameActivity* activity, ANativeWindow* window) {
// g_block_swapbuffers.store(true);
// if (g_app_running.load()) {
// ApplicationAndroid::Get()->SendAndroidCommand(
// AndroidCommand::kNativeWindowDestroyed);
// }
// }

// extern "C" SB_EXPORT_PLATFORM void GameActivity_onCreate(
// GameActivity* activity,
// void* savedState,
// size_t savedStateSize) {
// // Start the Starboard thread the first time an Activity is created.
// if (g_starboard_thread == 0) {
// Semaphore semaphore;

// pthread_attr_t attributes;
// pthread_attr_init(&attributes);
// pthread_attr_setdetachstate(&attributes, PTHREAD_CREATE_DETACHED);

// pthread_create(&g_starboard_thread, &attributes, &ThreadEntryPoint,
// &semaphore);

// pthread_attr_destroy(&attributes);

// // Wait for the ApplicationAndroid to be created.
// semaphore.Take();
// }

// activity->callbacks->onStart = OnStart;
// activity->callbacks->onResume = OnResume;
// activity->callbacks->onPause = OnPause;
// activity->callbacks->onStop = OnStop;
// activity->callbacks->onTouchEvent = OnTouchEvent;
// activity->callbacks->onKeyDown = OnKey;
// activity->callbacks->onKeyUp = OnKey;
// activity->callbacks->onWindowFocusChanged = OnWindowFocusChanged;
// activity->callbacks->onNativeWindowCreated = OnNativeWindowCreated;
// activity->callbacks->onNativeWindowDestroyed = OnNativeWindowDestroyed;

// activity->instance = ApplicationAndroid::Get();
// }

extern "C" SB_EXPORT_PLATFORM jboolean
Java_dev_cobalt_coat_StarboardBridge_nativeIsReleaseBuild() {
Expand Down
Loading

0 comments on commit 0de9900

Please sign in to comment.