From c9b8d278883a90f534f30f0830bb003460310823 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= <john@ankarstrom.se>
Date: Wed, 30 Mar 2022 20:15:52 +0200
Subject: Disregard foreign frames.

I don't think they're necessary.
---
 c/common.c          | 10 ++--------
 c/datalistview.c    |  8 ++------
 c/defs.h            |  2 --
 c/episodelistview.c | 46 ++++++++++++++--------------------------------
 c/listview.c        |  1 -
 c/main.c            | 18 ++----------------
 6 files changed, 20 insertions(+), 65 deletions(-)

(limited to 'c')

diff --git a/c/common.c b/c/common.c
index a4ac7d2..804611d 100644
--- a/c/common.c
+++ b/c/common.c
@@ -31,15 +31,9 @@ TszFromSz(const char *sz, int iCp)
 int
 Watched(int iEpisode)
 {
-	fid_t f;
 	term_t t;
-
-	F(f);
 	t = T(1);
-	PI(t,iEpisode) goto f;
-	P("track_episodes","watched",1,t) goto f;
-	Fd(f);
+	PI(t,iEpisode) return 0;
+	P("track_episodes","watched",1,t) return 0;
 	return 1;
-f:	Fd(f);
-	return 0;
 }
diff --git a/c/datalistview.c b/c/datalistview.c
index 9911887..99c3eed 100644
--- a/c/datalistview.c
+++ b/c/datalistview.c
@@ -32,7 +32,6 @@ DlvCreate()
 void
 DlvShowEpisode(int iEpisode)
 {
-	fid_t f;
 	LVITEM lviKey, lviValue;
 	term_t t;
 
@@ -41,10 +40,9 @@ DlvShowEpisode(int iEpisode)
 	lviKey.mask = LVIF_TEXT;
 	lviValue.mask = LVIF_TEXT;
 
-	F(f);
 	t = T(3);
-	PI(t,iEpisode) goto e;
-	P("episode_data","lookup_episode_local",3,t) goto e;
+	PI(t,iEpisode) return;
+	P("episode_data","lookup_episode_local",3,t) return;
 
    /*	The episode data is a list of unary compounds,
     *	whose functor is the key and whose argument is the value.
@@ -95,6 +93,4 @@ n:			free(tszKey);
 	}
 
 	UpdateLayout();
-
-e:	Fd(f);
 }
diff --git a/c/defs.h b/c/defs.h
index d4504ed..fd258f6 100644
--- a/c/defs.h
+++ b/c/defs.h
@@ -33,8 +33,6 @@ void DlvShowEpisode(int);
 #define Q(m,p,a,t) PL_open_query(NULL, PL_Q_NORMAL, PL_predicate(p,a,m), t)
 #define Qn(q) PL_next_solution(q)
 #define Qc(q) PL_cut_query(q)
-#define F(f) f = PL_open_foreign_frame()
-#define Fd(f) PL_discard_foreign_frame(f)
 #define T(a) PL_new_term_refs(a)
 #define PI(t,x) if (!PL_put_integer(t,x))
 #define GI(t,x) if (!PL_get_integer(t,x))
diff --git a/c/episodelistview.c b/c/episodelistview.c
index 37962b1..5dc0eeb 100644
--- a/c/episodelistview.c
+++ b/c/episodelistview.c
@@ -72,13 +72,10 @@ ElvHandleNotify(LPARAM lParam)
 	case NM_DBLCLK:
 	case NM_RETURN:
 	{
-		fid_t f;
 		term_t t;
-		F(f);
 		t = T(1);
-		PI(t+0, LpLviElvSelection->lParam) goto b;
+		PI(t+0, LpLviElvSelection->lParam) break;
 		P("local_episodes","open_episode",1,t);
-b:		Fd(f);
 		break;
 	}
 	case NM_RCLICK:
@@ -115,21 +112,19 @@ ElvSetTop(int iItem)
 void
 ElvSelectRecent()
 {
-	fid_t f;
 	int iEpisode, iItem;
 	LVFINDINFO lvfi;
 	term_t t;
 
-	F(f);
 	t = T(1);
-	P("track_episodes","most_recently_watched",1,t) goto e;
-	GI(t,&iEpisode) goto e;
+	P("track_episodes","most_recently_watched",1,t) return;
+	GI(t,&iEpisode) return;
 
 	lvfi.flags = LVFI_PARAM;
 	lvfi.lParam = iEpisode;
 
 	iItem = ListView_FindItem(HElv, -1, &lvfi);
-	if (iItem == -1) goto e;
+	if (iItem == -1) return;
 
 	if (iItem > 5)
 		ElvSetTop(iItem-5);
@@ -139,15 +134,12 @@ ElvSelectRecent()
 	LpLviElvSelection->lParam = iEpisode;
 	ElvUpdateName(LpLviElvSelection);
 	DlvShowEpisode(iEpisode);
-
-e:	Fd(f);
 }
 
 /* Update episode list. */
 void
 ElvUpdate()
 {
-	fid_t f;
 	int iLast, iTop;
 	LVITEM lviEpisode, lviName;
 	term_t t;
@@ -159,34 +151,31 @@ ElvUpdate()
 	lviEpisode.mask = LVIF_TEXT|LVIF_PARAM;
 	lviName.mask = LVIF_TEXT;
 
-	F(f);
 	t = T(1);
-	P("episode_data","last_episode",1,t) goto f;
-	GI(t,&iLast) goto f;
+	P("episode_data","last_episode",1,t) return;
+	GI(t,&iLast) return;
 
 	for (int i = 0; i < iLast; i++) {
 		char *szName;
-		fid_t f2;
 		int cb;
 		TCHAR *tszEpisode, *tszName;
 		term_t t2;
 
 		/* Format name string. */
 
-		F(f2);
 		t2 = T(3);
-		PI(t2,i+1) goto e;
+		PI(t2,i+1) return;
 		tszName = NULL;
 		P("episode_data","lookup_episode_local",3,t2) goto skipname;
 		GAC(t2+1,&szName) goto skipname;
 		tszName = TszFromSz(szName, CP_UTF8);
-		if (!tszName) goto e;
+		if (!tszName) return;
 
 		/* Format episode string. */
 skipname:
 		cb = 100;
 		tszEpisode = malloc(cb*sizeof(TCHAR));
-		if (!tszEpisode) goto e1;
+		if (!tszEpisode) goto e;
 		_stprintf_s(tszEpisode, cb, TEXT("%d"), i+1);
 
 		/* Insert item. */
@@ -205,8 +194,7 @@ skipname:
 		}
 
 		free(tszEpisode);
-e1:		if (tszName) free(tszName);
-e:		Fd(f2);
+e:		if (tszName) free(tszName);
 	}
 
 	/* Reset selection and scrolling position. */
@@ -218,7 +206,6 @@ e:		Fd(f2);
 
 	SendMessage(HElv, WM_SETREDRAW, TRUE, 0);
 	ElvRedraw();
-f:	Fd(f);
 }
 
 /* Update episode name. */
@@ -226,21 +213,16 @@ void
 ElvUpdateName(LPLVITEM lpLvi)
 {
 	char *szName;
-	fid_t f;
 	TCHAR *tszName;
 	term_t t;
 
-	F(f);
 	t = T(3);
-	PI(t,lpLvi->lParam) goto e;
-	P("episode_data","lookup_episode",3,t) goto e;
-	GAC(t+1,&szName) goto e;
+	PI(t,lpLvi->lParam) return;
+	P("episode_data","lookup_episode",3,t) return;
+	GAC(t+1,&szName) return;
 
 	tszName = TszFromSz(szName, CP_UTF8);
-	if (!tszName) goto e;
+	if (!tszName) return;
 
 	ListView_SetItemText(HElv, lpLvi->iItem, 1, tszName);
-
-e:	Fd(f);
-	return;
 }
diff --git a/c/listview.c b/c/listview.c
index 971c4e9..82c6459 100644
--- a/c/listview.c
+++ b/c/listview.c
@@ -50,7 +50,6 @@ LvProc(HWND hLv, UINT uMsg, WPARAM wParam, LPARAM lParam)
 	{
 		LRESULT lResult;
 		extern HWND HElv;
-		extern LPLVITEM LpLviElvSelection;
 
 	   /*	For the episode list view, the Enter key should not
 	    *	be handled by the dialog manager, but instead be sent
diff --git a/c/main.c b/c/main.c
index 8f8b0e5..90ae714 100644
--- a/c/main.c
+++ b/c/main.c
@@ -112,7 +112,6 @@ WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 		break;
 	case WM_ACTIVATE:
 		switch (wParam) {
-		fid_t f;
 		term_t t;
 		extern HWND HElv;
 		case WA_INACTIVE:
@@ -121,11 +120,9 @@ WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 			SetFocus(HElv);
 			/* FALLTHROUGH */
 		case WA_CLICKACTIVE:
-			F(f);
 			t = T(0);
 			P("track_episodes","update_tracked_episodes",0,t);
 			ElvRedraw();
-			Fd(f);
 		}
 		break;
 	case WM_NOTIFY:
@@ -155,11 +152,9 @@ WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 		case ID_FORGET:
 		case ID_LOOKUP:
 		{
-			fid_t f;
 			term_t t;
 			extern LPLVITEM LpLviElvSelection;
 
-			F(f);
 			t = T(1);
 			PI(t,LpLviElvSelection->lParam) break;
 
@@ -183,8 +178,6 @@ WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 				DlvShowEpisode(LpLviElvSelection->lParam);
 				break;
 			}
-
-			Fd(f);
 			break;
 		}
 		}
@@ -223,18 +216,11 @@ AboutDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 int
 Attach()
 {
-	fid_t f;
 	term_t t;
-
-	F(f);
 	t = T(0);
-	P("track_episodes","attach",0,t) goto f;
-	P("episode_data","attach",0,t) goto f;
-
-	Fd(f);
+	P("track_episodes","attach",0,t) return 0;
+	P("episode_data","attach",0,t) return 0;
 	return 1;
-f:	Fd(f);
-	return 0;
 }
 
 void
-- 
cgit v1.2.3