Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4499526 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 5ee2c9d2: Work on issue #17656716: Unhandled exception in Window Manager

* commit '5ee2c9d2':
  Work on issue #17656716: Unhandled exception in Window Manager
parents 112a7457 5ee2c9d2
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -1037,9 +1037,12 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
            
            const pid_t origPid = mCallingPid;
            const uid_t origUid = mCallingUid;
            const int32_t origStrictModePolicy = mStrictModePolicy;
            const int32_t origTransactionBinderFlags = mLastTransactionBinderFlags;

            mCallingPid = tr.sender_pid;
            mCallingUid = tr.sender_euid;
            mLastTransactionBinderFlags = tr.flags;

            int curPrio = getpriority(PRIO_PROCESS, mMyThreadId);
            if (gDisableBackgroundScheduling) {
@@ -1064,6 +1067,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
            //ALOGI(">>>> TRANSACT from pid %d uid %d\n", mCallingPid, mCallingUid);

            Parcel reply;
            status_t error;
            IF_LOG_TRANSACTIONS() {
                TextOutput::Bundle _b(alog);
                alog << "BR_TRANSACTION thr " << (void*)pthread_self()
@@ -1077,12 +1081,10 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
            }
            if (tr.target.ptr) {
                sp<BBinder> b((BBinder*)tr.cookie);
                const status_t error = b->transact(tr.code, buffer, &reply, tr.flags);
                if (error < NO_ERROR) reply.setError(error);
                error = b->transact(tr.code, buffer, &reply, tr.flags);

            } else {
                const status_t error = the_context_object->transact(tr.code, buffer, &reply, tr.flags);
                if (error < NO_ERROR) reply.setError(error);
                error = the_context_object->transact(tr.code, buffer, &reply, tr.flags);
            }

            //ALOGI("<<<< TRANSACT from pid %d restore pid %d uid %d\n",
@@ -1090,6 +1092,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
            
            if ((tr.flags & TF_ONE_WAY) == 0) {
                LOG_ONEWAY("Sending reply to %d!", mCallingPid);
                if (error < NO_ERROR) reply.setError(error);
                sendReply(reply, 0);
            } else {
                LOG_ONEWAY("NOT sending reply to %d!", mCallingPid);
@@ -1097,6 +1100,8 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
            
            mCallingPid = origPid;
            mCallingUid = origUid;
            mStrictModePolicy = origStrictModePolicy;
            mLastTransactionBinderFlags = origTransactionBinderFlags;

            IF_LOG_TRANSACTIONS() {
                TextOutput::Bundle _b(alog);